此处基于K-Means算法处理Iris数据集
KMeans.py
模块:
import numpy as np
class KMeansClassifier():
"""初始化KMeansClassifier类"""
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 = None
def _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个质心,返回一个k*n的质心矩阵"""
n = data_X.shape[1]
centroids = np.empty((k,n))
for j in range(n):
minJ =