資料採礦演算法學習(一)K-Means演算法

來源:互聯網
上載者:User

標籤:資料採礦   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.分析公司的客戶分類,使用不同的商業策略



原創文章,轉載請註明出處,謝謝。



聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.