Kmeans:最简单的聚类算法之一。kmeans算法是一种基于样本间相似性度量的间接聚类方法,属于非监督学习方法。此算法以k为参数,把n 个对象分为k个簇,以使簇内具有较高的相似度,而且簇间的相似度较低。相似度的计算根据一个簇中对象的平均值(被看作簇的重心)来进行。此算法首先随机选择k个对象,每个对象代表一个聚类的质心。对于其余的每一个对象,根据该对象与各聚类质心之间的距离,把它分配到与之最相似的聚类中。然后,计算每个聚类的新质心。重复上述过程,直到准则函数收敛。
import random
import matplotlib.pyplot as plt
import numpy
class KMeans():
def __init__(self,k):
self.__k = k #K表示分类数
self.__data = [] # 存放原始数据
self.__pointCenter = [] #存放中心点,第一次的中心点随机在__data中抽取
self.__result = [ ]
for i in range(k):
self.__result.append([]) #[[],[],[],[],[]]
def fit(self,data,threshold,times = 50000):
'''
:param data: 原始数据
:param threshold: 退出条件
:param times: 次数
:return:
'''
self.__data = data
self.randomCenter()
centerDistance = self.calPo