高斯混合模型
- 高斯混合模型就是用高斯機率密度函數(正态分布曲線)精确地量化事物,它是一個将事物分解為若幹的基于高斯機率密度函數(正态分布曲線)形成的模型。
- 在統計學中,混合模型是用于表示總體群體中亞群體的存在的機率模型
- 高斯混合模型(Gaussian Mixture Model)為單一高斯機率密度函數的延伸,用多個高斯機率密度函數(正态分布曲線)精确地量化變量分布,是将變量分布分解為若幹基于高斯機率密度函數(正态分布曲線)分布的統計模型。
- 應用:聚類:樣本受到哪個高斯分布的作用大,就認為樣本屬于哪個高斯分布
比較KMeans
- Kmeans是簡單的,因為它是基于假設一個樣本僅以1或0的機率屬于某一簇,這兩者之間的取值并沒有考慮,他無法考慮中間的取值,即一個點僅以某個機率屬于某個類别是不能計算的。
- 高斯混合模型不是簡單的考慮歐式距離的問題,它是使用高斯機率密度函數(正态分布曲線)精确地量化事物,它是一個将事物分解為若幹的基于高斯機率密度函數(正态分布曲線)形成的模型。 高斯模型就是用高斯機率密度函數(正态分布曲線)精确地量化事物
資料如下
Sex Height(cm) Weight(kg)
0 156 50
0 160 60
0 162 54
0 162 55
0 160.5 56
0 160 53
0 158 55
0 164 60
0 165 50
0 166 55
0 158 47.5
0 161 49
0 169 55
0 161 46
0 160 45
0 167 44
0 155 49
0 154 57
0 172 52
0 155 56
0 157 55
0 165 65
0 156 52
0 155 50
0 156 56
0 160 55
0 158 55
0 162 70
0 162 65
0 155 57
0 163 70
0 160 60
0 162 55
0 165 65
0 159 60
0 147 47
0 163 53
0 157 54
0 160 55
0 162 48
0 158 60
0 155 48
0 165 60
0 161 58
0 159 45
0 163 50
0 158 49
0 155 50
0 162 55
0 157 63
0 159 49
0 152 47
0 156 51
0 165 49
0 154 47
0 156 52
0 162 48
1 162 60
1 164 62
1 168 86
1 187 75
1 167 75
1 174 64
1 175 62
1 170 65
1 176 73
1 169 58
1 178 54
1 165 66
1 183 68
1 171 61
1 179 64
1 172 60
1 173 59
1 172 58
1 175 62
1 160 60
1 160 58
1 160 60
1 175 75
1 163 60
1 181 77
1 172 80
1 175 73
1 175 60
1 167 65
1 172 60
1 169 75
1 172 65
1 175 72
1 172 60
1 170 65
1 158 59
1 167 63
1 164 61
1 176 65
1 182 95
1 173 75
1 176 67
1 163 58
1 166 67
1 162 59
1 169 56
1 163 59
1 163 56
1 176 62
1 169 57
1 173 61
1 163 59
1 167 57
1 176 63
1 168 61
1 167 60
1 170 69
代碼實作如下
import numpy as np
import pandas as pd
from sklearn.mixture import GaussianMixture
## 資料加載
data = pd.read_csv('datas/HeightWeight.csv')
data_x = data[data.columns[1:]]
data_y = data[data.columns[0]]
data.head()
## 模型建立及訓練
gmm = GaussianMixture(n_components=2, covariance_type='full', random_state=28)
gmm.fit(data_x)
## 模型相關參數輸出
# print ('均值 = \n', gmm.means_)
# print ('方差 = \n', gmm.covariances_)
# 擷取預測值
y_hat = gmm.predict(data_x)
print(y_hat)
print(data_y.values.T)