赞
踩
1.scipy.cluster.vp的kmeans中第三个参数为迭代次数,默认为20,若数据量较大,建议增加次参数,第四个参数为终止阈值,默认1e-5,可根据需要进行修改,若希望以迭代次数为准,可不修改此值,因为1e-5对于大量数据来说,已经很小很小了。
2.针对多因子多量纲的K均值聚类,kmeans之前一定要先归一化数据,多量纲归一化。
3.若要针对每个因子分配权值,可在归一化后的数据上进行权值调整。
4.kmeans的返回值是个数组,0维代表分类后的编号标签,1维代表观测值与质心之间的距离,越小越接近质心。故考察结果的好坏可以通过类内因子间的欧式距离或者测值与质心之间的距离的平均值来考察。
废话不多说,自行看示例代码吧,已经注释的很详细了,至于缺少Python包的,自行百度安装吧。
# -*- coding: utf-8 -*- #导入相应的包 import scipy import scipy.cluster.hierarchy as sch from scipy.cluster.vq import vq,kmeans,whiten import numpy as np import matplotlib.pylab as plt import time #待聚类的数据点,cancer.csv有653行数据,每行数据有11维: dataset = np.loadtxt('TriplexSidewall7.csv', delimiter=",",dtype=np.float) #np数据从0开始计算,第0维维序号排除,第9维为标签排除,所以为1到8 points = dataset[:,1:8] cancer_label = dataset[:,8] print("points:\n",points) print("cancer_label:\n",cancer_label) # k-means聚类 #将原始数据做归一化处理 data=whiten(points) #https://blog.csdn.net/qq_41658437/article/details/105634446 print("data-one:\n",data) data = data*[0.52,0.08,0.08,0.08,0.08,0.08,0.08]#归一化后数据加权 print("data-one:\n",data) #使用kmeans函数进行聚类,输入第一维为数据,第二维为聚类个数k. #有些时候我们可能不知道最终究竟聚成多少类,一个办法是用层次聚类的结果进行初始化.当然也可以直接输入某个数值. #k-means最后输出的结果其实是两维的,第一维是聚类中心,第二维是损失distortion,我们在这里只取第一维,所以最后有个[0] #centroid = kmeans(data,max(cluster))[0] print (time.strftime('%H:%M:%S',time.localtime(time.time()))) centroid = kmeans(data,290,100000)[0]#10W次迭代 print (time.strftime('%H:%M:%S',time.localtime(time.time()))) print ("centroid:\n",centroid) #使用vq函数根据聚类中心对所有数据进行分类,vq的输出也是两维的,[0]表示的是所有数据的label label=vq(data,centroid)[0] #类编号 dist=vq(data,centroid)[1] #类观测值与其最接近的质心之间的失真(距离) num = [0,0] for i in label: if(i == 0): num[0] = num[0] + 1 else: num[1] = num[1] + 1 print ('num =',num) np.savetxt('file.csv',label)#输出观测值分类后对应的编号 np.savetxt('filedist.csv',dist)#输出观测值其最接近的质心之间的失真(距离) print("Final clustering by k-means:\n",label) result = np.subtract(label,cancer_label) print ("result:\n",result) count = [0,0] for i in result: if(i == 0): count[0] = count[0] + 1 else: count[1] = count[1] + 1 print(count) print (float(count[1])/(count[0]+count[1]))
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。