資料探勘演算法 K means演算法

2022-04-08 05:42:33 字數 2285 閱讀 7080

k-means中文稱為k均值聚類演算法,在2023年就被提出  所謂聚類就是將物理或者抽象物件的集合分組成為由類似的物件組成的多個簇的過程

聚類生成的組成為簇 簇內部任意兩個物件之間具有較高的相似度,不同簇的兩個物件之間具有較高的相異度

相異度和相似度可以根據描述的物件的屬性值來計算  物件間的距離是最常採用的相異度度量指標

常用的距離方法有

k-means是基於劃分的方法 就是通過迭代將資料物件劃分為k個組每個組為乙個簇

每個分組至少包含乙個物件

每個物件屬於且僅屬於某個分組

輸入:簇的數目k和包含n個物件的資料集d

輸出:k個簇的集合

方法:1.從d中任意選擇k個物件作為初始簇的質心;

2.計算每個物件與各簇質心的距離,並且將物件劃分到距離其更近的簇

3.更新每個新簇的質心

4.重複2.3步驟,直到簇中的物件不再變化

對k-means演算法的幾點說明

1.簇的質心就是簇中所有物件在每一維屬性的舉止組合成的虛擬點 並非實際存在的資料點

2.對雜訊和離群(孤立)點資料是敏感,因為它們的存在會對均值的計算產生極大的影響

3.物件到質心的距離通常使用歐式距離來計算

4.要求使用者實現給出生成的數目,要求k值已直

5.演算法收斂的速度和結果容易受初始質心的影響

來個例子:

資料集:

n = 8, k = 2;取1和

3為初始點

序號屬性1

屬性2111

2213

1242

2543

6537

4485

4

1 #include2

using

namespace

std;

3struct

node

4node[100

];8 vectorbeginn[100],endd[100];9

int flag = 0;10

double distance(paira, node b)

13bool check(int

k )

1420

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

29}

30return

true;31

}32intmain()

33//

只要把這些點當作是初始點就可以 與其他的點無關即可

46while(true)47

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

表示有k個堆 計算每個堆裡面的值

5459

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

6068

} 69 endd[u].push_back(i + 1

); 70

}71 cout<

新計算得到的

"<

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

7378 cout<

原本的"

<

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

8085

gg.clear();

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

8794 sum1 = sum1 /endd[i].size();

95 sum2 = sum2 /endd[i].size();

96 gg.push_back(make_pair(sum1,sum2)); //

得到的新的值 97}

98 cout<

新的平均值:

"<

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

100 cout

"<< gg[i].second<

101 cout<

102if

(check(k))

103return0;

104}

105return0;

106 }

結果可得

資料探勘演算法 k means

k means 演算法r實現 先用setwd設定工作空間,如d盤,並將相關資料拷貝到該目錄下 setwd d k means 讀入資料 data read.csv d k means data km kmeans data,center 3 print km km size sum km size ...

資料探勘之K Means演算法

k means思想 將n個樣本分成k個聚類,每個聚類裡的樣本關聯性 或者說是相似性 比較高。舉個例子,假如有5個樣本,每個樣本是乙個2維向量,分別記做a,b,c,d,e,我要將他們分成2個聚類,第一步是隨機選2個樣本 也可以是虛擬的 把它們當做中心點,然後將 a,b,c,d,e歸類到距離最小的那個中...

資料探勘經典演算法之 K means演算法

k means 是一種基於距離的排他的聚類劃分方法。上面的 k means 描述中包含了幾個概念 給定乙個 n 個物件的資料集,它可以構建資料的 k 個劃分,每個劃分就是乙個簇,並且 k n。同時還需滿足 每個組至少包含乙個物件。每個物件必須屬於且僅屬於乙個簇。如圖所示,簡單的來說,k means聚...