import numpy as np #导入numpy包,且起名为np
'''numpy是Python中科学计算的基础包,它是一个Python库,提供多维数组对象,
各种派生对象,如掩码数组和矩阵以及用于数组快速操作的各种例程。'''
import matplotlib.pyplot as plt #导入matplotlib库中的pyplot包,并起名为plt
'''(matplotlib.pyplot 是命令行风格的函数集,
让matplotlib看起来像MATLAB.Each一样工作。
pyplot函数能够对画布(figure)进行一些改变,例如:创建一个画布(figure),
在画布中创建一个绘图区域,在绘图区域中画图,使用文字标签修饰图形。)'''
def L2(vecXi, vecXj):
'''输入:向量vecXi,向量vecXj
输出:两个向量的欧式距离
描述:计算两个向量的欧式距离
计算欧氏距离
para vecXi:点坐标,向量
para vecXj:点坐标,向量
return: 两点之间的欧氏距离(距离标量)'''
return np.sqrt(np.sum(np.power(vecXi - vecXj, 2)))
#np.sqrt(x):计算数组各元素的平方根,括号里的数必须大于或等于0。
#numpy中的sum则可以求出矩阵或数组所有元素的和
#np.power(x, y) 表示x 的y次方,
# y=2表示x的平方,y=1/2表示x开方,y =1/3表示x开立方,y= -1表示x的倒数。
def kMeans(S, k, distMeas=L2):
'''输入:数据集,k,计算向量间距离的函数名,随机生成k个随机质心的函数名
输出:包含质心的集合,包含K个随机质心(clusterCents)的集合,簇分配结果矩阵
描述:kmeans算法实现
K均值聚类
para S:样本集,多维数组(样本数据集,np数组)
para k:簇个数
para distMeas:距离度量函数,默认为欧氏距离计算函数
return sampleTag:一维数组,存储样本对应的簇标记
return clusterCents:一维数组,各簇中心
retrun SSE:误差平方和'''
k-means聚类算法的验证
最新推荐文章于 2022-10-16 16:53:59 发布