#-*- coding: utf-8 -*-
importnumpy as npclassKMeansClassifier():def __init__(self, k=3, initCent='random', max_iter=500):
self._k=k
self._initCent=initCent
self._max_iter=max_iter
self._clusterAssment=None
self._labels=None
self._sse=Nonedef_calEDist(self, arrA, arrB):"""功能:欧拉距离距离计算
输入:两个一维数组"""
return np.math.sqrt(sum(np.power(arrA-arrB, 2)))def_calMDist(self, arrA, arrB):"""功能:曼哈顿距离距离计算
输入:两个一维数组"""
return sum(np.abs(arrA-arrB))def_randCent(self, data_X, k):"""功能:随机选取k个质心
输出:centroids #返回一个m*n的质心矩阵"""n= data_X.shape[1] #获取特征的维数
centroids = np.empty((k,n)) #使用numpy生成一个k*n的矩阵,用于存储质心
for j inrange(n):
minJ=min(data_X[:, j])
rangeJ= f