sklearn GMM模型介紹

參考  SKlearn 庫 EM 算法混合高斯模型參數說明及代碼實現   和   sklearn.mixture.GaussianMixturehtml

之前的推導內容:    GMM 與 EM 算法算法

記錄下經常使用的參數,以及函數。apache

參數說明

class sklearn.mixture.GaussianMixture(n_components=1, covariance_type='full', tol=0.001, reg_covar=1e-06, max_iter=100, 
n_init=1, init_params='kmeans', weights_init=None, means_init=None, precisions_init=None, random_state=None, warm_start=False,
verbose=0, verbose_interval=10)

1. n_components: 混合高斯模型個數,默認爲 1 
2. covariance_type: 協方差類型,包括 {‘full’,‘tied’, ‘diag’, ‘spherical’} 四種,full 指每一個份量有各自不一樣的標準協方差矩陣,徹底協方差矩陣(元素都不爲零), tied 指全部份量有相同的標準協方差矩陣(HMM 會用到),diag 指每一個份量有各自不一樣對角協方差矩陣(非對角爲零,對角不爲零), spherical 指每一個份量有各自不一樣的簡單協方差矩陣,球面協方差矩陣(非對角爲零,對角徹底相同,球面特性),默認‘full’ 徹底協方差矩陣 框架

3. tol:EM 迭代中止閾值,默認爲 1e-3. 
4. reg_covar: 協方差對角非負正則化,保證協方差矩陣均爲正,默認爲 0 
5. max_iter: 最大迭代次數,默認 100 
6. n_init: 初始化次數,用於產生最佳初始參數,默認爲 1 
7. init_params: {‘kmeans’, ‘random’}, defaults to ‘kmeans’. 初始化參數實現方式,默認用 kmeans 實現,也能夠選擇隨機產生 
8. weights_init: 各組成模型的先驗權重,能夠本身設,默認按照 7 產生 
9. means_init: 初始化均值,同 8 
10. precisions_init: 初始化精確度(模型個數,特徵個數),默認按照 7 實現 
11. random_state : 隨機數發生器 
12. warm_start : 若爲 True,則 fit()調用會以上一次 fit()的結果做爲初始化參數,適合相同問題屢次 fit 的狀況,能加速收斂,默認爲 False。 
13. verbose : 使能迭代信息顯示,默認爲 0,能夠爲 1 或者大於 1(顯示的信息不一樣) 
14. verbose_interval : 與 13 掛鉤,若使能迭代信息顯示,設置多少次迭代後顯示信息,默認 10 次。dom

函數:

aic(X) Akaike information criterion for the current model on the input X.          輸入 X 上當前模型的 aic(X)Akaike 信息標準。
bic(X) Bayesian information criterion for the current model on the input X.         輸入 X 上當前模型的 bic(X)貝葉斯信息準則。
fit(X[, y]) Estimate model parameters with the EM algorithm.              fit(X [,y])使用 EM 算法估算模型參數。
get_params([deep]) Get parameters for this estimator.                get_params([deep])獲取此估算器的參數。
predict(X) Predict the labels for the data samples in X using trained model.        預測(X)使用訓練模型預測 X 中數據樣本的標籤。
predict_proba(X) Predict posterior probability of each component given the data.      predict_proba(X)預測給定數據的每一個組件的後驗機率。
sample([n_samples]) Generate random samples from the fitted Gaussian distribution.    sample([n_samples])從擬合的高斯分佈生成隨機樣本。
score(X[, y]) Compute the per-sample average log-likelihood of the given data X.    得分(X [,y])計算給定數據 X 的每樣本平均對數似然。
score_samples(X) Compute the weighted log probabilities for each sample.      score_samples(X)計算每一個樣本的加權對數機率。
set_params(**params) Set the parameters of this estimator.              set_params(** params)設置此估算器的參數。函數

最主要的步驟是fit,而後內部在用em算法進行迭代求參數了。post

score_samples(x) 返回加權對數機率,因此指數形式,就是gmm模型給出的機率。學習

predict_proba() 給出每一個gmm的子高斯模型的機率,相似這種形式:this

[[1.23749644e-06 1.95769562e-15 9.99998763e-01 5.29319585e-14]
 [2.22219085e-35 1.06858732e-17 5.83110038e-16 1.00000000e+00]
 [1.35866699e-42 1.85132861e-23 6.24590778e-19 1.00000000e+00]...

這是個4個組分的gmm,已經紅色標註了,這是機率最高的,屬於對應組分的機率最大url

predict ()   預測是哪一個組分的,

用上面的例子,獲得的結果就是: [2 3 3 ...]  由於是4分類,0123

經常使用的也就這些了,sklearn的框架要比本身寫的好用不少,雖然可以推導出公式,可是代碼不必定寫的出來。。。

 

最後分享一個關於協方差類型的官網例子:  GMM covariances

以此爲模板,咱們只須要把數據的輸入形式搞對應了,就能夠作不少事情。

值得一提的是,gmm須要初始化,咱們上一篇學習的kmeans就能夠拿來作gmm的初始化,他的 k個 質心座標,能夠用來做爲gmm  k個組分的初始均值。這個在咱們下一篇實戰中細說。

相關文章
相關標籤/搜索