1.作者介绍
赵一剑,男,西安工程大学电子信息学院,2021级研究生 研究方向:机器视觉与人工智能, 电子邮件:962022932@qq.com
刘帅波,男,西安工程大学电子信息学院,2021级研究生,张宏伟人工智能课题组 研究方向:机器视觉与人工智能 电子邮件:1461004501@qq.com
2.数据集介绍
该程序通过生成三个测试点,分别为(1,1,)(1,-1)(-1,-1),之后在三个测试点周围各生成300个样本点最终便形了AP运算的数据集
3.实验代码
from sklearn.cluster import AffinityPropagation
from sklearn import metrics
from sklearn.datasets.samples_generator import make_blobs
centers = [[1, 1], [-1, -1], [1, -1]]
X, labels_true = make_blobs(n_samples=300, centers=centers, cluster_std=0.5,
random_state=0)
ap = AffinityPropagation(preference=-50).fit(X)
cluster_centers_indices = ap.cluster_centers_indices_
labels = ap.labels_
n_clusters_ = len(cluster_centers_indices)
cluster_center = X[cluster_centers_indices]
print(cluster_center)
print('预测的聚类中心个数:%d' % n_clusters_)
print('同质性:%0.3f' % metrics.homogeneity_score(labels_true, labels))
print('完整性:%0.3f' % metrics.completeness_score(labels_true, labels))
print('V-值: % 0.3f' % metrics.v_measure_score(labels_true, labels))
print('调整后的兰德指数:%0.3f' % metrics.adjusted_rand_score(labels_true, labels))
print('调整后的互信息: %0.3f' % metrics.adjusted_mutual_info_score(labels_true, labels))
print('轮廓系数:%0.3f' % metrics.silhouette_score(X, labels, metric='sqeuclidean'))
import matplotlib.pyplot as plt
from itertools import cycle
plt.close('all')
plt.figure(1)
plt.clf()
colors = cycle('bgrcmykbgrcmykbgrcmykbgrcmyk')
for k, col in zip(range(n_clusters_), colors):
class_members = labels == k
cluster_center = X[cluster_centers_indices[k]]
plt.plot(X[class_members, 0], X[class_members, 1], col + '.')
plt.plot(cluster_center[0], cluster_center[1], markerfacecolor=col,
markeredgecolor='k', markersize=14)
for x in X[class_members]:
plt.plot([cluster_center[0], x[0]], [cluster_center[1], x[1]], col)
plt.title('预测聚类中心个数:%d' % n_clusters_)
plt.show()
4.实验结果与分析
最终的运行结果的V-值为0.872,V-值是同质性和完整性的调和平均数,它的取值区间在0-1之间,值越大相似度越高。调整后的兰德指数(ARI)为0.912,ARI的取值范围为-1—1,值越大意味着聚类结果与真实情况越吻合。从广义角度上来讲,ARI是衡量两个数据分布的吻合程度。 从以上两组数据分析得知AP聚类算法的准确度是相对可靠的。 运行图如下
|