Kmeans演算法及其示例

2021-08-01 15:19:34 字數 1841 閱讀 4826

kmeans是簡單的聚類分析演算法。其常用在資料分析與人工智慧中。

簡單說,kmeans演算法就是把乙個集合中的東西分為若干子集,這幾個子集內的元素具有空間相近或者特點相近。

做法:1.    隨機選取k各中心點,生成對應的k個簇。

2.    遍歷所有的資料點,依據「距離』」將每乙個資料點劃分到最近的中心點所在的簇。

3.    計算每個簇所有的資料點的平均值,並作為該簇新的中心。

4.    重複2-3步,直到這k個簇的中心點不再變化,或者達到我們規定的迭代次數。

注意:1.    kmean演算法思想本身比較簡單,但是設定k數量與初始中心點卻比較難以確定。

2.    需要判斷處理空聚類以防某個初始中心點設定不合理。

3.    這裡的「距離」指歐氏距離或者是余弦相似度,也可以指某種特徵,不要被「距離」二字侷限

4.    每個資料點是幾維的,那麼資料中心也應該是幾維的,這裡kmeans可以想象成將高維空間中的若干個資料點分為若干團。(其實也有特殊情況)

kmeans++演算法,主要可以解決初始中心的選擇問題,不可解決k的個數。

kmeans++主要思想是選擇的初始聚類中心要盡量的遠。

做法:1.    在輸入的資料點中隨機選乙個作為第乙個聚類中心。

2.    對於所有資料點,計算它與最近的聚類中心的距離d(x)

3.    重新選擇乙個資料點作為聚類中心,選擇原則:d(x)較大的點被選為聚類中心的概率較大。

4.    重複2-3直到選出k個聚類中心。

5.    執行kmeans演算法。

ps:其初始中心的設定我在這直接取了資料點中最大與最小點的等分值,資料預處理部分**去掉。

題目是對乙個具有四波段的海洋遙感圖做聚類分析。

將整幅圖劃分為若干塊,然後對每個塊取其波段均值,然後做聚類分析。

#include #include #include #include #include //kmeans演算法 

//資料預處理**已去除

using namespace std;

class map

void calc_row_column(int x,int y)

bool is_valid()

};class vector4

vector4()

};templateclass kcenter

typename list::iterator is_member(t_ map)

} return member.end();

} void push(t_ map)

void pop(t_ map)

} float distance_from_map(t_ samp)

void adjust_center()

for(int j=0; j<4; j++)

center[j] /= num; }

float all_distance()

return dist; }

private:

listmember; };

const int n_k = 4; //k中心個數

kcenterkcenters[n_k];

//尋找初始簇的質心

void find_centers(vector4 centers,int n,map maps,int n_maps)

} if(maps[i].which_center == -1) else if (maps[i].which_center != num_select)

} for(int i=0; i

分析結果為每種聚類賦一種顏色。

K means演算法及其優化

聚類演算法是一種典型的無監督學習演算法,主要用於將相似的樣本自動歸到乙個類別中。聚類演算法與分類演算法最大的區別是 聚類演算法是無監督的學習演算法,而分類演算法屬於監督的學習演算法。在聚類演算法中根據樣本之間的相似性,將樣本劃分到不同的類別中,對於不同的相似度計算方法,會得到不同的聚類結果,常用的相...

kmeans演算法及其實現

k 均值演算法能夠使聚類域中所有樣品到聚類中心距離平方和最小。其原理為 先取 k個初始聚類中心,計算每個樣品到這 k個中心的距離,找出最小距離,把樣品歸入最近的聚類中心,修改中心點的值為本類所有樣品的均值,再計算各個樣品到新的聚類中心的距離,重新歸類,修改新的中心點,直到新的聚類中心和上一次聚類中心...

K means演算法原理以及其缺點

k means是一種經典unsupervised的聚類演算法。其演算法描述如下 輸入 聚類個數 k,n個資料物件 輸出 每個資料物件所屬的聚類label 滿足方差最小 從n個資料物件中挑選出k個質心。計算n個資料物件距離不同質心的距離,並將n個資料物件劃分到與之距離最小的質心,形成新的k個聚類。重新...