K_Means算法的简单实现C++

本文介绍了K_Means算法的核心思想,包括选择初始聚类中心、根据中心对象计算对象距离并重新划分、更新聚类均值等步骤。通过一个具体实例展示了如何使用C++实现K_Means算法,该实例中需要将8个点聚类为3类,并给出了距离函数为欧氏距离的情况。文章还提及了算法的迭代过程,包括第一次循环后的聚类中心和最终的聚类中心。
摘要由CSDN通过智能技术生成

1.K_Means算法核心思想:(计算,递归)
(1) 从 n个数据对象任意选择 k 个对象作为初始聚类中心;
(2) 根据每个聚类对象的均值(中心对象),计算每个对象与这些中心对象的距离;并根据最小距离重新对相应对象进行划分;
(3) 重新计算每个(有变化)聚类的均值(中心对象)
(4) 循环(2)到(3)直到每个聚类不再发生变化为止
2.简单实列:
问题:假设数据挖掘的任务是将8个点聚类成3个类别, A1(2,10), A2(2,5), A3(8,4), B1(5,8), B2(7,5), B3(6,4), C1(1,2), C2(3,7), C3(4,9),距离函数是Euclidean距离。 假设初始选择A1, B1, C1分别作为每个聚类的中心用 K-means来给出,
代码(C++实现):
第一次循环执行后的三个聚类中心是多少?最后的三个中心是多少?
(题目来自某位我喜欢的AI领域老师的课后习题。)

#include<iostream>
#include<math.h>
#include<vector>
#include<cstring>

using namespace std;


enum center_flag {
	set_1,
	set_2,
	set_3
};//集合标志

struct	Point {
	float					x{0};
	float					y{0};
	center_flag			flag{ set_1 };
	
}Point_A1, Point_A
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值