Ach*_*113 4 python k-means scikit-learn
我想使用 sklearns k-means 聚类函数对鸢尾花数据集进行分类(虽然我删除了标签,所以现在它是未标记的数据)。我已经制作了预测模型,输出似乎在很大程度上正确地对数据进行了分类,但是它是随机选择标签(0、1 和 2),我无法将其与我自己的标签进行比较以确定准确性(我将 setosa 标记为 0,versicolor 标记为 1,virginica 标记为 2)。有什么方法可以正确地给花贴上标签吗?
代码如下:
from sklearn.cluster import KMeans
cluster = KMeans(n_clusters = 3)
cluster.fit(features)
pred = cluster.labels_
score = round(accuracy_score(pred, name_val), 4)
print('Accuracy scored using k-means clustering: ', score)
Run Code Online (Sandbox Code Playgroud)
特征,如预期包含特征,name_val是包含花值的矩阵,0代表setosa,1代表versicolor,2代表virginica
编辑:我想出的一个解决方案是将 random_state 设置为任意数字,以便标签保持不变,还有其他解决方案吗?
您需要查看聚类指标来评估您的预测,其中包括
现在以完整性分数为例,
如果属于给定类的所有数据点都是同一簇的元素,则聚类结果满足完整性。
例如
from sklearn.metrics.cluster import completeness_score
print completeness_score([0, 0, 1, 1], [1, 1, 0, 0])
#Output : 1.0
Run Code Online (Sandbox Code Playgroud)
与您想要的类似。对于您来说,代码将是completeness_score(pred, name_val)。请注意,分配给数据点的标签并不重要,重要的是它们相对于彼此的标签。
另一方面,同质性关注同一集群内数据点的质量。而 V-measure 定义为2 * (homogeneity * completeness) / (homogeneity + completeness)
请阅读此处的官方文档:同质性、完整性和 V 测量
归档时间: |
|
查看次数: |
14619 次 |
最近记录: |