K means的簡單實現

2021-07-10 13:47:23 字數 794 閱讀 6979

這篇文章中的k-means是簡單的實現,沒有調初始質心點和k的值,k的值設為3,初始質心點是測試資料的前三個。

並且沒有對資料進行歸一化處理,只是用原始資料進行聚類。

下面是**:

#include #include#include#include#include#include#define k 3

using namespace std;

typedef vectortrain;

int datanum;

int dimnum;

int min(double d1,double d2,double d3)

void getmindistance(vector& trains,vectorcen)

void kmeans(vector& trains)

while(isnotchange)

else

}cout

cout

cout

ifstream infile(fname);

if(!infile)

trains.push_back(train);

}cout<

測試結果如下圖:

第一列即為聚類結果,1表示第一類,2表示第二類,3表示第3類

只是最簡單的k-means過程,,

如果有好的調k-means的方法,歡迎提出~

k means的簡單實現

部分 import random import math import numpy as np import operator defget distance x1,x2 得到兩點之間的距離 dist x y for x,y in zip x1,x2 distance 0 for i in dist...

Python實現簡單的K Means演算法,視覺化

執行效果 隨機生成大致是k個類別的點,用均勻分布生成中心點的位置,用高斯分布生成中心點周圍的點 def generatorn k center np.random.rand 1 20,np.random.rand 1 20 for in range k data for x,y in center ...

C 實現簡單的K means聚類演算法

namespace k means public int getprocess endregion region 根據點到質心的距離,將點放到不同的組中 for int i 0 i num i if j 0 else int groupknum groupnum index resultp inde...