Advertisement

K-Means算法测试点集分类

阅读量:

K_Means

聚类分析的定义
聚类分析旨在揭示数据对象之间的内在联系,通过将数据划分为多个组别,使得组内成员的相似性较高,而不同组之间的差异性较大,从而实现更优的聚类效果。
具有明显分离特性的簇
从(a)中可以观察到,任意两个属于不同组的点之间的距离均大于同一组内任意两点间的距离。这表明具有明显分离特征的簇并不局限于球形结构,其形态可以是任意形状。
算法的基本原理如下所示:
首先确定K个初始质心点
重复执行以下步骤:
将每个数据点分配给与其最近的质心,从而形成K个簇
重新计算每个簇对应的质心位置
直到簇的划分不再发生改变或达到预设的最大迭代次数

关键代码实现:
// 类方法:执行一次迭代操作
public void IterateOnce()
{
// 依次计算每个样本点所属的簇类别
for (int i = 0; i <= _SampleList.Count - 1; i++)
{
// 计算该样本点与各个簇(质心)之间的距离,并将其归入距离最小的簇中
double minDist = 9999999;
for (int j = 0; j <= _ClusterList.Count - 1; j++)
{
double dist = CalcDist(_Sam

全部评论 (0)

还没有任何评论哟~