python-使用numpy库方法实现kmeans算法
在老师的带领下,重新用numpy实现了一下kmeans算法
import random
import matplotlib.pyplot as plt
import numpy as np
import time
class KMeans():
def __init__(self, k=1):
'''
:param k: k代表分类数
'''
self.__k = k
self.__data = None # 存放原始数据,转为numpy类型
self.__pointCenter = None # 存放中心点,第一次获得的中心点通过随机方式在__data里随机出来,numpy类型
self.__result = [] # 存放分类结果
for i in range(k):
self.__result.append([]) # [[],[],[],[],[]]
pass
pass
def fit(self, data, threshold, times=50000):
'''
进行模型训练
:param data: 训练数据
:param threshold: 阈值,退出条件
:return:
'''
self.__data = data #得到测试数据
self.randomCenter() #得到中心点
#print(self.__pointCenter)
centerDistance = self.calPointCenterDistance(self.__pointCenter, self.__data)
#计算中心点与各个点之间的距离
# 对原始数据进行分类,将每个点分到离它最近的中心点
i = 0
for temp in centerDistance:
index = np.argmin(temp) #得到最小值索引
self.__result[index].append