——以二維陣列、鳶尾花和中國城市經緯度為例項
先簡單了解下kmeans聚類演算法。聚類演算法屬於無監督學習,其中的kmeans演算法是將一組有n個樣本的資料劃分成k個不相交的 clusters (簇) c。 means (均值)通常被稱為 cluster(簇)的 「centroids(質心)」; 注意,它們一般不是從 x 中挑選出的點,雖然它們是處在同乙個 space(空間)。演算法有三個步驟。要知道歐氏距離、曼哈頓距離、明可夫斯基距離三個距離的公式和計算。講概念的文章很多,這篇還不錯。
我看了文章之後,對原理了解個大概,但是還是不知道怎麼運用。然後師兄給我推薦了乙個例項,鳶尾花資料的聚類。我看的是這個文章
看了之後大概知道kmeans聚類演算法的框架吧。
from sklearn.cluster import kmeans
import matplotlib.pyplot as plt
import numpy as np
匯入資料,有兩種方法,第一種直接在**裡輸入。
x = [[0.0888, 0.5885],
[0.1399, 0.8291],
[0.0747, 0.4974],
[0.0983, 0.5772],
[0.1276, 0.5703],
[0.1671, 0.5835],
[0.1906, 0.5276],
[0.1061, 0.5523],
[0.2446, 0.4007],
[0.1670, 0.4770],
[0.2485, 0.4313],
[0.1227, 0.4909],
[0.1240, 0.5668],
[0.1461, 0.5113],
[0.2315, 0.3788],
[0.0494, 0.5590],
[0.1107, 0.4799],
[0.2521, 0.5735],
[0.1007, 0.6318],
[0.1067, 0.4326],
[0.1956, 0.4280]
]print(x)
第二種是呼叫檔案。現在資料夾儲存.txt檔案然後呼叫。我這邊因為方便用的是txt,但是今天在呼叫的時候出了問題,txt文件裡的空格沒發現,看上去是一樣,其實有乙份有空格,在windows系統裡看不出來,找師兄幫忙,師兄用的是linux系統就發現問題了。
這兩張是windows系統的,看上去都沒有空行,我一直找不出錯誤。
這兩張是linux系統下的,可以發現第二張的文件行與行之間是有空行的。
這個教訓提醒我,以後要像師兄一樣,用.mat檔案,用python去呼叫,不用偷懶用.txt
呼叫文件的**如下,自己需要改的是檔案儲存位址和呼叫的資料範圍。
x =
f = open('citiess.txt')
for v in f:
x = np.array(x)
print(x)
設定分類器,剛入門可以直接設定好k數量,而不是去尋找最優k。
city = kmeans(n_clusters=5)
y_pred = city.fit_predict(x)
「=」後面的數字表示分成幾類,這個**還有其他表示方式,結果都一樣。
city = kmeans(n_clusters=5)
city.fit(x)
y_pred = city.fit_predict(x)
把結果畫出來,不同資料,不同分類數量**不同。`我參考這個文章
markers = [』*』, 『o』, 『+』, 『s』, 『v』]
n_clusters=5
for i in range(n_clusters):
members = city.labels_ == i
plt.scatter(x[members,0],x[members,1],s = 60,marker = markers[i],c = 『r』,alpha=0.5)
plt.title(『china』)
plt.show()
print(x)
我自己去網上找的中國各個城市經緯度的資料,和原文資料不一樣。出來的效果圖如下。這個圖讓我深刻認識到對畫圖工具掌握的極為不熟練,回去學習了。哭遼t_t
改一下第四步的**,這個圖凑活看吧
我練了三個例項,二維陣列第二步中直接輸入資料,其餘**差不多。鳶尾花在第一步中直接匯入鳶尾花資料,python庫里就有。中國各城市經緯度在第二步匯入資料,**視文件微調。資料如下。
kmeans 聚類演算法還可以往聚類、文字聚類上面深入研究。陳同學要先回去練python100例了。學演算法還是很愉快的~
基於Python的K means聚類演算法
k means聚類的基本原理就不多闡述了,這裡直接講解如何實現。效果圖 紅色節點代表聚類中心,藍色節點和綠色節點代表不同的兩類 可以看到,初始時綠色節點很少且大多聚集於左下方,隨著聚類中心的移動,綠色節點區域越來越大,直到最後會穩定下來。一 建節點類 由於該聚類演算法是基於二維的,因此基本元素就是節...
K Means聚類演算法
k means聚類演算法 intergret kmeans演算法的基本思想是初始隨機給定k個簇中心,按照最鄰近原則把待分類樣本點分到各個簇。然後按平均法重新計算各個簇的質心,從而確定新的簇心。一直迭代,直到簇心的移動距離小於某個給定的值。k means聚類演算法主要分為三個步驟 1 第一步是為待聚類...
聚類演算法 K means
演算法接受引數 k 然後將事先輸入的n個資料物件劃分為 k個聚類以便使得所獲得的聚類滿足 同一聚類中的物件相似度較高 而不同聚類中的物件相似度較小。聚類相似度是利用各聚類中物件的均值所獲得乙個 中心物件 引力中心 來進行計算的。k means演算法是最為經典的基於劃分的聚類方法,是十大經典資料探勘演...