java實現kmeans演算法

2021-08-27 13:07:37 字數 1883 閱讀 1535

kmeans演算法是一種經典的聚類演算法,其核心思想是:根據給定的聚類個數k,隨機選擇k個點作為初始的中心節點,然後按照樣本中其他節點與這k個節點的距離進行分類。每分類一次就重新計算一次k個中心節點,直到所有樣本中的節點所屬的分類不再變化為止。

**:

public class kmeansalgorithm  else 

// 為每條資料賦初始類別0

for(int i = 0; i < dataset.size(); i++)

// 隨機從資料集中選注k個點作為初始的k個中心節點

arraylist> centerdata = new arraylist>();

for(int i = 0; i < k; i++)

for(int i = 0; i < t; i++)

}dataset.get(j).set(datadimension, classify);

}// 每次分類後計算中心節點的位置變化情況

double variance = computechange(dataset, centerdata, k, datadimension);

if(variance < threshold)

// 每次分類後重新計算中心節點

centerdata = computecenterdata(dataset, k, datadimension);

} return dataset; }

/***

* @title: computedistance

* @description: 計算任意兩個節點間的距離

* @return double

* @throws

*/public double computedistance(arraylistd1, arraylistd2)

return math.sqrt(squaresum); }

/***

* @title: computecenterdata

* @description: 計算中心節點

* @return arraylist* @throws

*/public arraylist> computecenterdata(arraylist> dataset, int k, int datadimension)

for(int j = 0; j < dataset.size(); j++) }}

for(int l = 0; l < datadimension; l++)

res.add(tmp);

} return res;

} /**

* * @title: computechange

* @description: 計算兩輪迭代中心節點位置的變化量

* @return double

* @throws

*/public double computechange(arraylist> dataset, arraylist> centerdata, int k, int datadimension)

return variance; }

public static void main(string args)

// 產生簇2

for(int i = 0; i < cluster2_num; i++)

// 產生簇3

for(int i = 0; i < cluster3_num; i++)

kmeansalgorithm d = new kmeansalgorithm();

arraylist> dd = d.getclusters(dataset, 3);

system.out.println(dd); }

}

k means聚類演算法的java實現

聚類分析是一種重要的人類行為,早在孩提時代,乙個人就通過不斷改進下意識中的聚類模式來學會如何區分貓狗 動物植物。目前在許多領域都得到了廣泛的研究和成功的應用,如用於模式識別 資料分析 影象處理 市場研究 客戶分割 web文件分類等 1 聚類就是按照某個特定標準 如距離準則 把乙個資料集分割成不同的類...

Kmeans演算法實現

include opencv2 highgui highgui.hpp include opencv2 core core.hpp include using namespace cv using namespace std static void help int main int argc ch...

K means演算法實現

import math import numpy class point data reader file name str def init self,file name point data reader.file name file name defget data list self,num...