一. 聚类的性能评测
1. 导入digits数据集,分割训练集和测试集
这个数据集是随便导入的,也可以选择其他数据集
标签 target 有10个分类
2. 导入聚类算法,训练,预测
-
导入聚类算法,将样本集划分为10个聚类
此时数据有标签类别,评测的时候可以用聚类划分和真实的类别之间的吻合程度 -
训练
-
预测
K-means还提供了预测机制,预测基于前面的训练,把测试集样本依次带入,查看这个些样本分别落在哪一个聚类中,然后把响应聚类标号给对应的样本
3. ARI指标
聚类和类别之间的吻合程度,我们称为ARI指标
修改 参数n_cluster可改变ARI指标
- n_cluster=9
可以发现ARI指标变小了
- n_cluster=11
还是比 n_cluster=10时ARI指标更小
所以 n_cluster=10时,此时算法的ARI指标最佳
4. 轮廓系数
聚类大部分情况下处理的无标签的数据,评测的时候不能用ARI;我们可以用一个指标,既能兼顾到聚类内部的聚合程度,又能兼顾到聚类之间的离散程度,这个指标就是轮廓系数。
轮廓系数越大,则聚类划分越合理
查看轮廓系数
这两个轮廓系数都挺小的,但是,如果n_cluster≠10,这个轮廓系数更差
5. 用轮廓系数来决定聚类个数
- 导入两组1~100的随机数
- 定义一个列表,存储若干个聚类K的可取值,把特征组合成样本
- 求出每一次划分的轮廓系数
查看图像
- 作出轮廓系数与k值之间的关系图
这两个随机数组,当聚类数为9时,轮廓系数最佳
二. 聚类实践与常见错误
导包,使用make_blobs创建样本点
1、数据偏差太大
- 创建一个样本,指定这些样本点的特征数为2,样本数为150,类别数为3,随机程度为5
- 用聚类算法将上面的样本点分成3类
从图像对比,可以明显发现数据偏差大
2、内部标准差太大
- 创建一个样本,指定这些样本点的特征数为2,样本数为150,类别数为3,聚类中心点的坐标为[0.5,2,10]
- 用聚类算法将上面的样本点分成3类
由于聚类中心点的坐标的限制,内部标准差太大导致聚类的偏差
3、样本数量差别太大
- 创建一个样本,指定这些样本点的特征数为2,样本数为1500,类别数为3,随机程度为0
2) 用聚类算法将上面的样本点分成3类
由于样本数量的差距,导致聚类的偏差