聚類的概念:一種無監督的學習,事先不知道類別,自動將相似的物件歸到同乙個簇中。
k-means演算法是一種聚類分析(cluster analysis)的演算法,其主要是來計算資料聚集的演算法,主要通過不斷地取離種子點最近均值的演算法。
k-means演算法主要解決的問題如下圖所示。我們可以看到,在圖的左邊有一些點,我們用肉眼可以看出來有四個點群,但是我們怎麼通過電腦程式找出這幾個點群來呢?於是就出現了我們的k-means演算法
這個演算法其實很簡單,如下圖所示:
從上圖中,我們可以看到,a,b,c,d,e是五個在圖中點。而灰色的點是我們的種子點,也就是我們用來找點群的點。有兩個種子點,所以k=2。
然後,k-means的演算法如下:
隨機在圖中取k(這裡k=2)個種子點。
然後對圖中的所有點求到這k個種子點的距離,假如點pi離種子點si最近,那麼pi屬於si點群。(上圖中,我們可以看到a,b屬於上面的種子點,c,d,e屬於下面中部的種子點)
接下來,我們要移動種子點到屬於他的「點群」的中心。(見圖上的第三步)
然後重複第2)和第3)步,直到,種子點沒有移動(我們可以看到圖中的第四步上面的種子點聚合了a,b,c,下面的種子點聚合了d,e)。
這個演算法很簡單,重點說一下「求點群中心的演算法」:歐氏距離(euclidean distance):差的平方和的平方根
k-means主要最重大的缺陷——都和初始值有關:
k是事先給定的,這個k值的選定是非常難以估計的。很多時候,事先並不知道給定的資料集應該分成多少個類別才最合適。(isodata演算法通過類的自動合併和**,得到較為合理的型別數目k)
k-means演算法需要用初始隨機種子點來搞,這個隨機種子點太重要,不同的隨機種子點會有得到完全不同的結果。(k-means++演算法可以用來解決這個問題,其可以有效地選擇初始點)
總結:k-means演算法步驟:
從資料中選擇k個物件作為初始聚類中心;
計算每個聚類物件到聚類中心的距離來劃分;
再次計算每個聚類中心
計算標準測度函式,直到達到最大迭代次數,則停止,否則,繼續操作。
確定最優的聚類中心
k-means演算法應用
看到這裡,你會說,k-means演算法看來很簡單,而且好像就是在玩座標點,沒什麼真實用處。而且,這個演算法缺陷很多,還不如人工呢。是的,前面的例子只是玩二維座標點,的確沒什麼意思。但是你想一下下面的幾個問題:
1)如果不是二維的,是多維的,如5維的,那麼,就只能用計算機來計算了。
2)二維座標點的x,y 座標,其實是一種向量,是一種數學抽象。現實世界中很多屬性是可以抽象成向量的,比如,我們的年齡,我們的喜好,我們的商品,等等,能抽象成向量的目的就是可以讓計算機知道某兩個屬性間的距離。如:我們認為,18歲的人離24歲的人的距離要比離12歲的距離要近,鞋子這個商品離衣服這個商品的距離要比電腦要近,等等。
1、聚類例項
重要引數:
1.1 導包,使用make_blobs生成隨機點cluster_std
匯入資料集模組,建立一系列的樣本點
make_blobs()這個函式用於建立一系列的樣本點,我們可以指定這些樣本點的特徵數,樣本數,類別數等
n_features=2, 特徵數為2
n_samples=150, 樣本數為150
centers=3, 類別數為3
random_state=1 隨機程度為1
繪製散點圖
1.2 用聚類演算法將上面的樣本點分成3類
建立k-means演算法模型,訓練
這個演算法是無監督學習演算法,只傳特徵資料,不傳標籤檢視聚類無監督學習不是致力於由已知資料**未知資料,而是對客觀資料的特徵進行相關的處理
這個訓練的過程:
1)我們取2個種子點
2)求所有樣本點到每乙個種子點的距離並且進行所有樣本點的聚類歸屬的劃分
3)求每乙個聚類的中心點作為新的種子點 4)重複2、3兩步,直至所有的種子點不再移動為止
k-means演算法訓練完以後,會從0開始給每乙個聚類進行編號
0,1,2表示該資料屬於哪個聚類
檢視聚類的中心點(即種子點)
繪圖檢視,紅色點即為種子點
2 . 實戰 亞洲足球隊資料
匯入資料把亞洲15支球隊劃分3個聚類提取出能夠度量的屬性作為特徵
劃分3個聚類,訓練
檢視聚類,輸出三個聚類上的國家
前端學習 Day06
用標籤名作為選擇器,選中所有相應的元素 根據class的屬性來選擇元素,樣式定義為 classname 根據id名來選擇元素,樣式定義為 idname 選擇器 描述 attribute 選取帶有指定屬性的元素。12456 attribute value 選取帶有指定屬性和值的元素。6 attribu...
mysql 學習筆記 day06
檢視操作 create alter view name as select column name from table name 事物操作 原子性 一致性隔離性 永續性 create table class id int primary key auto increment,cz money de...
python學習系列 day06
一 io 1 檔案讀寫 1 讀檔案 開啟檔案 f open home jamson pythonfiles test.txt r 其路徑可以是絕對路徑,也可以是相對路徑。第二個引數是指明開啟方式 或者 with open test.txt r as f 系統會自動呼叫f.close 關閉開啟的檔案 ...