sklearn的高斯混合模型GMM與Kmeans的實現(xiàn)

Scikit-learn是基于numpy和scipy的一個機器學(xué)習(xí)算法庫台谊,包含很多監(jiān)督學(xué)習(xí)冤寿,非監(jiān)督學(xué)習(xí)一級半監(jiān)督學(xué)習(xí)的算法。同時也包括數(shù)據(jù)特征提取青伤,數(shù)據(jù)清洗等的一些功能。從功能來分殴瘦,有以下幾個:分類Classification, 回歸Regression, 聚類Clustering, 維度降低Dimensionality Reduction, 模型選擇Model Selection 和 預(yù)處理Preprocessing.

高斯混合模型GMM和KMeans都是聚類算法狠角,其中GMM利用高斯概率密度函數(shù)來量化事物,將事物分解為若干高斯分布的模型蚪腋。將觀測點數(shù)據(jù)及的分布丰歌,看做多個單一的高斯分布模型進行混合,每一個component就是一個聚類的中心屉凯。


WechatIMG18.jpeg

KMeans就是將輸入的數(shù)據(jù)分為k類立帖。首先隨機確定k個中心點,根據(jù)所有觀測點與中心點之間的距離悠砚,將觀測點分為不同的類晓勇。再根據(jù)新的Cluster計算新的中心點,并且重新歸類灌旧。循環(huán)直到中心點的位置不再有變化绑咱。


WechatIMG17.jpeg

以下是所有程序的代碼:
首先導(dǎo)入Excel文件的數(shù)據(jù):

# Open excel file
workbook = xlrd.open_workbook('DATA.xlsx')
# Choose sheets 1
sheet1 = workbook.sheet_by_name('Sheet1')
# Get Data Sets
numRow = sheet1.nrows
numCol = sheet1.ncols
x = np.zeros((numRow, numCol))
for i in range(sheet1.nrows):
    if i == 0:
        continue
    else:
        x[i][0] = (sheet1.row_values(i)[0])
        x[i][1] = (sheet1.row_values(i)[1])

利用KMeans進行擬合:

kmeans = KMeans(n_clusters=5, max_iter=300, n_init=10, init='k-means++', random_state=0)
y_kmeans = kmeans.fit_predict(x)

for i in range(1,len(y_kmeans)):
    if y_kmeans[i] == 0:
        plt.scatter(x[i, 0], x[i, 1], s=15, c='red')
    elif y_kmeans[i] == 1:
        plt.scatter(x[i, 0], x[i, 1], s=15, c='blue')
    elif y_kmeans[i] == 2:
        plt.scatter(x[i, 0], x[i, 1], s=15, c='green')
    elif y_kmeans[i] == 3:
        plt.scatter(x[i, 0], x[i, 1], s=15, c='cyan')
    elif y_kmeans[i] == 4:
        plt.scatter(x[i, 0], x[i, 1], s=15, c='magenta')
print(kmeans.cluster_centers_)
plt.scatter(kmeans.cluster_centers_[:,0], kmeans.cluster_centers_[:,1], s = 30, c = 'yellow', label = 'Centroids')
plt.title('K-Means Clusters  K = 5')
plt.xlabel('x')
plt.ylabel('y')
plt.legend()
plt.show()

利用GMM進行擬合:

gmmModel = GaussianMixture(n_components=5, covariance_type='diag', random_state=0)
gmmModel.fit(x)
labels = gmmModel.predict(x)
print(labels)
for i in range(1,len(labels)):
    if labels[i] == 0:
        plt.scatter(x[i, 0], x[i, 1], s=15, c='red')
    elif labels[i] == 1:
        plt.scatter(x[i, 0], x[i, 1], s=15, c='blue')
    elif labels[i] == 2:
        plt.scatter(x[i, 0], x[i, 1], s=15, c='green')
    elif labels[i] == 3:
        plt.scatter(x[i, 0], x[i, 1], s=15, c='cyan')
    elif labels[i] == 4:
        plt.scatter(x[i, 0], x[i, 1], s=15, c='magenta')
plt.title('Gaussian Mixture Model')
plt.xlabel('x')
plt.ylabel('y')
plt.show()
print(gmmModel.means_)
print(gmmModel.covariances_)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市枢泰,隨后出現(xiàn)的幾起案子描融,更是在濱河造成了極大的恐慌,老刑警劉巖衡蚂,帶你破解...
    沈念sama閱讀 221,331評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件窿克,死亡現(xiàn)場離奇詭異,居然都是意外死亡毛甲,警方通過查閱死者的電腦和手機年叮,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,372評論 3 398
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來丽啡,“玉大人谋右,你說我怎么就攤上這事〔构浚” “怎么了改执?”我有些...
    開封第一講書人閱讀 167,755評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長坑雅。 經(jīng)常有香客問我辈挂,道長,這世上最難降的妖魔是什么裹粤? 我笑而不...
    開封第一講書人閱讀 59,528評論 1 296
  • 正文 為了忘掉前任终蒂,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘拇泣。我一直安慰自己噪叙,他們只是感情好,可當我...
    茶點故事閱讀 68,526評論 6 397
  • 文/花漫 我一把揭開白布霉翔。 她就那樣靜靜地躺著睁蕾,像睡著了一般。 火紅的嫁衣襯著肌膚如雪债朵。 梳的紋絲不亂的頭發(fā)上子眶,一...
    開封第一講書人閱讀 52,166評論 1 308
  • 那天,我揣著相機與錄音序芦,去河邊找鬼臭杰。 笑死,一個胖子當著我的面吹牛谚中,可吹牛的內(nèi)容都是我干的渴杆。 我是一名探鬼主播,決...
    沈念sama閱讀 40,768評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼藏杖,長吁一口氣:“原來是場噩夢啊……” “哼将塑!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起蝌麸,我...
    開封第一講書人閱讀 39,664評論 0 276
  • 序言:老撾萬榮一對情侶失蹤点寥,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后来吩,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體敢辩,經(jīng)...
    沈念sama閱讀 46,205評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,290評論 3 340
  • 正文 我和宋清朗相戀三年弟疆,在試婚紗的時候發(fā)現(xiàn)自己被綠了戚长。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,435評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡怠苔,死狀恐怖同廉,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情柑司,我是刑警寧澤迫肖,帶...
    沈念sama閱讀 36,126評論 5 349
  • 正文 年R本政府宣布,位于F島的核電站攒驰,受9級特大地震影響蟆湖,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜玻粪,卻給世界環(huán)境...
    茶點故事閱讀 41,804評論 3 333
  • 文/蒙蒙 一隅津、第九天 我趴在偏房一處隱蔽的房頂上張望诬垂。 院中可真熱鬧,春花似錦伦仍、人聲如沸结窘。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,276評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽晦鞋。三九已至,卻和暖如春棺克,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背线定。 一陣腳步聲響...
    開封第一講書人閱讀 33,393評論 1 272
  • 我被黑心中介騙來泰國打工娜谊, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人斤讥。 一個月前我還...
    沈念sama閱讀 48,818評論 3 376
  • 正文 我出身青樓纱皆,卻偏偏與公主長得像,于是被迫代替她去往敵國和親芭商。 傳聞我的和親對象是個殘疾皇子派草,可洞房花燭夜當晚...
    茶點故事閱讀 45,442評論 2 359

推薦閱讀更多精彩內(nèi)容