標籤:資料採礦 weka k-means 分類演算法 演算法應用
博主最近實習開始接觸資料採礦,將學習筆記分享給大家。目前用的軟體是weka,下篇文章會著重講解。
演算法簡介:
K-Means演算法是輸入聚類個數k,以及包含n個資料對象的資料庫,輸出滿足方差最小標準的k個聚類。並使得所獲得的聚類滿足:同一聚類中的對象相似度較高;而不同聚類對象相似度較小。
演算法假設:
均方誤差是計算群組分散度的最佳參數。
演算法輸入:
聚類個數k;包含n個資料對象的資料集。
演算法輸出:
k個聚類
演算法思想:
(a)綠點表示資料集在二級的歐幾裡德空間,初始化的中心點u1和u2用紅的和藍的叉來分別表示
(b)在最初的E步驟中,每個點根據離哪個簇中心點近,被指定為屬於紅簇還是藍簇,這等於將這些點根據垂直於兩個中心點的分隔線的的哪邊分類,它用紫色的線表示。
(c)在接下來的M步驟,重新計算每個簇的中心點的平均值作為每個簇的中心點。
直至中心點位置不變或者變化很小。
weka運行:
以weather.nominal.arff為例運行結果部分如下:
從結果中可以看出,這組資料用K-Means演算法迭代四次,初始產生了兩個中心點。最終有10個instances彙總為一類,4個instances彙總為一類。
函數調用代碼:
//讀入樣本
Filefile=new File("F:\\Program Files (x86)\\Weka-3-7\\data\\weather.nominal.arff");
ArffLoaderloader= newArffLoader();
loader.setFile(file);
ins=loader.getDataSet();
//初始化聚類器並設定k值
KM= new SimpleKMeans();
KM.setNumClusters(2);
//進行聚類
KM.buildClusterer(ins);
//列印結果
tempIns=KM.getClusterCentroids();
System.out.println(“CentroIds:”+tempIns);
運行結果如下:
@attributeoutlook {sunny,overcast,rainy}
@attribute temperature {hot,mild,cool}
@attribute humidity {high,normal}
@attribute windy {TRUE,FALSE}
@attribute play {yes,no}
@data
sunny,mild,high,FALSE,yes
overcast,cool,normal,TRUE,yes
演算法應用:
1.圖片分割
圖為取不同k值時的效果。
2.電子商務中分析商品相似度,歸類商品
3.分析公司的客戶分類,使用不同的商業策略
原創文章,轉載請註明出處,謝謝。