K-means聚类算法
1、算法思想
首先,我们可以随机选取K个对象作为初始的聚类中心,然后计算每个对象与每一个种子聚类中心的距离,然后分别把这些对象分配给距离对象最近的一个聚类中心,只要对象被分配以后,被分配的对象就和聚类中心组成一个新的聚类,分配后就不能改变了,然后在根据每个聚类的聚类中心和对象的距离进行重新计算,并且一直重复这样的计算,直到没有对象可以被重新分配给不同的聚类或聚类中心不再发生变化或误差平方和局部已经最小,这样循环计算就会停止。
2、优缺点
优点:a.算法容易实现
b.当聚类个数小于真实值时,误差平方和会下降的很快;
缺点:a.当聚类个数超过真实值时,误差平方和虽然会继续下降,但是下降的速度会缓减,而这个转折点就是最佳的聚类个数了。
b.非均质的数据、不同类别内部方差不相同
3、伪代码
输入:类簇的个数K,迭代终止值Z。
输出:聚类结果
For(t=1;t
给出数据对象Xi;
计算聚类中心和对象的距离dist(Xi,Centerk);
将Xi划到距离Xi最近的类簇中心所在的类簇中
For(直到Xi不能在分配){
将所有的类簇中心更新
}
输出聚类结果;
}
4.代码实现
import numpy as np
import pandas as pd
import random
import