Python 实现分层聚类算法


''' 1.将所有样本都看作各自一类 2.定义类间距离计算公式 3.选择距离最小的一堆元素合并成一个新的类 4.重新计算各类之间的距离并重复上面的步骤 5.直到所有的原始元素划分成指定数量的类 程序要点: 1.生成测试数据 sklearn.datasets.make_blobs 2.系统聚类算法 sklearn.cluster.AgglomerativeClustering 3.必须满足该条件不然会报错(自定义函数中的参数) assert 1 <= n_clusters <= 4 4.颜色,红绿蓝黄 r g b y 5. o * v + 散点图的形状 6.[] 内可以为条件表达式,输出数组中满足条件的数据 data[predictResult == i] 7.访问 x 轴,y 轴坐标 subData[:,0] subData[:,1] 8.plt.scatter(x轴,y轴,c,marker,s=40) colors = "rgby" markers = "o*v+" c 颜色 c=colors[i] marker 形状 marker=markers[i] 9.生成随机数据并返回样本点及标签 data,labels = make_blobs(n_samples=200,centers=4) make_blobs 为 sklearn.datasets.make_blobs 库 n_samples 为需要的样本数量 centers 为标签数 ''' import numpy as np import matplotlib.pyplot as plt from sklearn.datasets import make_blobs from sklearn.cluster import AgglomerativeClustering def AgglomerativeTest(n_clusters): assert 1 <= n_clusters <= 4 predictResult = AgglomerativeClustering( n_clusters=n_clusters, affinity='euclidean', linkage='ward' ).fit_predict(data) # 定义绘制散点图时使用的颜色和散点符号 colors = "rgby" markers = "o*v+" # 依次使用不同的颜色和符号绘制每个类的散点图 for i in range(n_clusters): subData = data[predictResult == i] plt.scatter( subData[:,0], subData[:,1], c = colors[i], marker = markers[i], s = 40 ) plt.show() # 生成随机数据,200个点,4类标签,返回样本及标签 data , labels = make_blobs(n_samples=200,centers=4) print(data) AgglomerativeTest(2)

2020-04-10


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM