使用K-Means 算法进行聚类分析程序

使用K-Means 算法进行聚类分析程序
编程对以下数据(150 个样本)使用K-Means 算法进行聚类分析.
(4.8,3.1,1.6,0.2),
(5.4,3.4,1.5,0.4),
(5.2,4.1,1.5,0.1),
(5.5,4.2,1.4,0.2),
(4.9,3.1,1.5,0.2),
(5.0,3.2,1.2,0.2),
(5.5,3.5,1.3,0.2),
(4.9,3.6,1.4,0.1),
(4.4,3.0,1.3,0.2),
(5.1,3.4,1.5,0.2),
(5.0,3.5,1.3,0.3),
(4.5,2.3,1.3,0.3),
(4.4,3.2,1.3,0.2),
(5.0,3.5,1.6,0.6),
(5.1,3.8,1.9,0.4),
(4.8,3.0,1.4,0.3),
(5.1,3.8,1.6,0.2),
(4.6,3.2,1.4,0.2),
(5.3,3.7,1.5,0.2),
(5.0,3.3,1.4,0.2),
(7.0,3.2,4.7,1.4),
(6.4,3.2,4.5,1.5),
(6.9,3.1,4.9,1.5),
(5.5,2.3,4.0,1.3),
(6.5,2.8,4.6,1.5),
(5.7,2.8,4.5,1.3),
(6.3,3.3,4.7,1.6),
(4.9,2.4,3.3,1.0),
(6.6,2.9,4.6,1.3),
(5.2,2.7,3.9,1.4),
(5.0,2.0,3.5,1.0),
(5.9,3.0,4.2,1.5),
(6.0,2.2,4.0,1.0),
(6.1,2.9,4.7,1.4),
(5.6,2.9,3.9,1.3),
(6.7,3.1,4.4,1.4),
(5.6,3.0,4.5,1.5),
(5.8,2.7,4.1,1.0),
(6.2,2.2,4.5,1.5),
(5.6,2.5,3.9,1.1),
(5.9,3.2,4.8,1.8),
(6.1,2.8,4.0,1.3),
(6.3,2.5,4.9,1.5),
(6.1,2.8,4.7,1.2),
(6.4,2.9,4.3,1.3),
(6.6,3.0,4.4,1.4),
(6.8,2.8,4.8,1.4),
(6.7,3.0,5.0,1.7),
(6.0,2.9,4.5,1.5),
(5.7,2.6,3.5,1.0),
(5.5,2.4,3.8,1.1),
(5.5,2.4,3.7,1.0),
(5.8,2.7,3.9,1.2),
(6.0,2.7,5.1,1.6),
(5.4,3.0,4.5,1.5),
(6.0,3.4,4.5,1.6),
(6.7,3.1,4.7,1.5),
(6.3,2.3,4.4,1.3),
(5.6,3.0,4.1,1.3),
(5.5,2.5,5.0,1.3),
(5.5,2.6,4.4,1.2),
(6.1,3.0,4.6,1.4),
(5.8,2.6,4.0,1.2),
(5.0,2.3,3.3,1.0),
(5.6,2.7,4.2,1.3),
(5.7,3.0,4.2,1.2),
(5.7,2.9,4.2,1.3),
(6.2,2.9,4.3,1.3),
(5.1,2.5,3.0,1.1),
(5.7,2.8,4.1,1.3),
(6.3,3.3,6.0,2.5),
(5.8,2.7,5.1,1.9),
(7.1,3.0,5.9,2.1),
(6.3,2.9,5.6,1.8),
(6.5,3.0,5.8,2.2),
(7.6,3.0,6.6,2.1),
(4.9,2.5,4.5,1.7),
(7.3,2.9,6.3,1.8),
(6.7,2.5,5.8,1.8),
(7.2,3.6,6.1,2.5),
(6.5,3.2,5.1,2.0),
(6.4,2.7,5.3,1.9),
(6.8,3.0,5.5,2.1),
(5.7,2.5,5.0,2.0),
(5.8,2.8,5.1,2.4),
(6.4,3.2,5.3,2.3),
(6.5,3.0,5.5,1.8),
(7.7,3.8,6.7,2.2),
(7.7,2.6,6.9,2.3),
(6.0,2.2,5.0,1.5),
(6.9,3.2,5.7,2.3),
(5.6,2.8,4.9,2.0),
(7.7,2.8,6.7,2.0),
(6.3,2.7,4.9,1.8),
(6.7,3.3,5.7,2.1),
(7.2,3.2,6.0,1.8),
(6.2,2.8,4.8,1.8),
(6.1,3.0,4.9,1.8),
(6.4,2.8,5.6,2.1),
(7.2,3.0,5.8,1.6),
(7.4,2.8,6.1,1.9),
(7.9,3.8,6.4,2.0),
(6.4,2.8,5.6,2.2),
(6.3,2.8,5.1,1.5),
(6.1,2.6,5.6,1.4),
(7.7,3.0,6.1,2.3),
(6.3,3.4,5.6,2.4),
(6.4,3.1,5.5,1.8),
(6.0,3.0,4.8,1.8),
(6.9,3.1,5.4,2.1),
(6.7,3.1,5.6,2.4),
(6.9,3.1,5.1,2.3),
(5.8,2.7,5.1,1.9),
(6.8,3.2,5.9,2.3),
(6.7,3.3,5.7,2.5),
(6.7,3.0,5.2,2.3),
(6.3,2.5,5.0,1.9),
(6.5,3.0,5.2,2.0),
(6.2,3.4,5.4,2.3),
(5.9,3.0,5.1,1.8)
tianlan7789 1年前 已收到1个回答 举报

titanata 幼苗

共回答了27个问题采纳率:81.5% 举报

你这是四维数据,我这是一维数据kmeans,你试试吧
#include
#include
#include
#include
using namespace std;
int N; //数据个数
int K; //集合个数
int *CenterIndex; //质心索引集合,即属于第几个参考点
double *Center; //质心集合
double *CenterCopy;
double *DataSet;
double **Cluster;
int *Top;
/*算法描述:
C-Fuzzy均值聚类算法采用的是给定类的个数K,将N个元素(对象)分配到K个类中去使得类内对象之间的相似性最大,而类之间的相似性最小 */
//函数声明部分
void InitData();
void InitCenter();
void CreateRandomArray(int n,int k,int *centerIndex);
void CopyCenter();
void UpdateCluster();
void UpdateCenter();
int GetIndex(double value,double *centerIndex);
void AddtoCluster(int index,double value);
void print();
bool IsEqual(double *center,double *centercopy);
int main()
{
int Flag=1;
InitData();
while(Flag)//无限次循环
{
UpdateCluster();
UpdateCenter();
if(IsEqual(Center,CenterCopy))
{
Flag=0;
}
else
{
CopyCenter();
}
}
print();
getchar();
system("pause");
}
void InitData()
{
int i=0;
int a;
coutN;
coutK;
if(K>N)
{
return;
}
CenterIndex =new int [sizeof(int)];
Center =new double [sizeof(double)*K];
CenterCopy =new double [sizeof(double)*K];
DataSet =new double [sizeof(double)*N];
Cluster =new double* [sizeof(double*)*K];
Top =new int [sizeof(int)*K];
//初始化K个类的集合
for(i=0;i

1年前

4
可能相似的问题
Copyright © 2024 YULUCN.COM - 雨露学习互助 - 16 q. 0.014 s. - webmaster@yulucn.com