python贝叶斯网络预测模型_高效灵活的概率建模方法基于Python
前言
在今天給大家介紹一個研究工具:pomegranate。它比其他軟件包更加靈活,更快,直觀易用,并且可以在多線程中并行完成。
The API
主要模型介紹一般混合模型
隱馬爾可夫模型
貝葉斯網絡
貝葉斯分類器
所有模型使用做多的方法
model.log_probability(X) / model.probability(X)
model.sample()
model.fit(X, weights, inertia)
model.summarize(X, weights)
model.from_summaries(inertia)
model.predict(X) model.predict_proba(X)
model.predict_log_proba(X)
model.from_samples(X, weights)
支持很多分布函數單變量分布
1. UniformDistribution
2. BernoulliDistribution
3. NormalDistribution
4. LogNormalDistribution
5. ExponentialDistribution
6. BetaDistribution
7. GammaDistribution
8. DiscreteDistribution
9. PoissonDistribution
內核密度
1. GaussianKernelDensity
2. UniformKernelDensity
3. TriangleKernelDensity
多變量分布
1. IndependentComponentsDistribution
2. MultivariateGaussianDistribution
3. DirichletDistribution
4. ConditionalProbabilityTable
5. JointProbabilityTable
模型可以從已知值中創建
模型也可以從數據直接學習
pomegranate 比 numpy 快
只需要一次數據集(適用于所有模型)。以下是正態分布統計示例:
支持核心學習
由于使用了足夠多的統計數據,因此可以支持外核/在線學習。
pomegranate 比 scipy 快
The API
主要模型介紹一般混合模型
隱馬爾可夫模型
貝葉斯網絡
貝葉斯分類器
通用混合模型(GMM)可以對多組分布進行建模
GMM使用期望最大化(EM)來擬合
1、使用kmeans ++或kmeans ||初始化集群
2、對于等于后P(M | D)(E步)的所有點分配權重
3、使用加權點更新分布(M步)
4、重復2和3,直到收斂
model = GeneralMixtureModel.from_samples(NormalDistribution, 2, X)
GMM不限于高斯分布
單個指數分布不能很好的數據進行建模
model = ExponentialDistribution.from_samples(X)
兩個指數混合使數據更好的模擬
model = GeneralMixtureModel.from_samples(ExponentialDistribution, 2, X)
Heterogeneous mixtures are natively supported
model = GeneralMixtureModel.from_samples([ExponentialDistribution, UniformDistribution], 2, X)
一般混合模型比sklearn快
The API
主要模型介紹一般混合模型
隱馬爾可夫模型
貝葉斯網絡
貝葉斯分類器
CG enrichment detection HMM
GACTACGACTCGCGCTCGCGCGACGCGCTCGACATCATCGACACGACACTC
GMM-HMM
HMM比hmmlearn快
The API
主要模型介紹一般混合模型
隱馬爾可夫模型
貝葉斯網絡
貝葉斯分類器
P(M|D)= P(D|M)P(M) / P(D)
Posterior = Likelihood * Prior / Normalization
基于數據建立一個簡單的分類器
似然函數本身忽略了類不平衡
先驗概率可以模擬分類不平衡
后驗模型更真實地對原始數據進行建模
后者的比例是一個很好的分類器
model = NaiveBayes.from_samples(NormalDistribution, X, y)
posteriors = model.predict_proba(idxs)
P(M|D)= ∏P(D|M) P(M) / P(D)
Posterior = Likelihood * Prior / Normalization
Naive Bayes does not need to be homogenous
不同的功能屬于不同的分布
Gaussian Naive Bayes: 0.798
sklearn Gaussian Naive Bayes: 0.798
Heterogeneous Naive Bayes: 0.844
與sklearn一樣快
P(M|D)= P(D|M) P(M) / P(D)
Posterior = Likelihood * Prior / Normalization
mc_a = MarkovChain.from_samples(X[y == 0])
mc_b = MarkovChain.from_samples(X[y == 1])
model_b = BayesClassifier([mc_a, mc_b], weights=numpy.array([1-y.mean(), y.mean()]))
hmm_a = HiddenMarkovModel…
hmm_b = HiddenMarkovModel...
model_b = BayesClassifier([hmm_a, hmm_b], weights=numpy.array([1-y.mean(), y.mean()]))
bn_a = BayesianNetwork.from_samples(X[y == 0])
bn_b = BayesianNetwork.from_samples(X[y == 1])
model_b = BayesClassifier([bn_a, bn_b], weights=numpy.array([1-y.mean(), y.mean()]))
并行
總結
以上是生活随笔為你收集整理的python贝叶斯网络预测模型_高效灵活的概率建模方法基于Python的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 非静压模型NHWAVE学习(1)——模型
- 下一篇: 计算机流体仿真,ANSYS FLUENT