sklearn kmeans_[精]Kmeans应用与特征选择

1实验

在介绍完 kmeans 的方法之后,我们找了 真实的数据集来做算法实验。我们使用的数据 集是 sklearn 机器学习库里面的 datasets 子库中 的鸢尾花(iris)数据,共包括 150 个花的数据, 每个数据有四个属性(特征),分别是花萼长度, 花萼宽度,花瓣长度,花瓣宽度。然后,我们 选取不同的特征对花进行聚类,首先我们选择 花萼长度,花萼宽度作为特征聚类,然后我们 选择花瓣长度,花瓣宽度进行聚类,最后,我 们一起用四个特征进行聚类,比较聚类结果。 对 于 质 心 初 始 化 方 法, 我 们 采 用 kmeans++ 中的初始化方法代替随机选取初始 质心的方法。 对于聚类的个数,我们分别设为 2,3,4 来 进行实验,观察实验结果,通过可视化方法, 判断设为几类才是最合适的。

2结果展示

我们用散点图标注每个数据点,并且用 颜色(红,蓝,绿,黄)区分它所属的类别, 来观察数据点在特征空间的分布,判断聚类结 果十分合理。在每个图中,横坐标代表花某一 部分的长度,纵坐标代表花某一部分的宽度, 坐标轴的单位都是厘米,每一种颜色是一簇。

首先我们仅用花萼长度,花萼宽度来聚 类,聚类的类别个数分别设定为 2,3,4,对应 从左到右三个图。可以看出花萼长度和宽度的 数据分布没有特别明显的簇状分布,所以类别 个数分为 2,3,4 看起来都有一定道理。

然后,我们用花瓣长度,花瓣宽度来聚类, 聚类的类别个数分别设定为 2,3,4,对应从左 到右三个图。我们能看到很明显有两簇数据点 分布较远,中间隔着很大距离,即画面左下角 的簇和画面中间到右上角的簇,故聚类类数选 为 2 比较合理。此时,虽然聚成两类有一个数 据点被误判,但大体能区分这两部分,也是可 取的。

最后,我们用花萼长度,花萼宽度,花瓣 长度,花瓣宽度四个属性共同去对花进行聚类, 也就是这四个特征都会影响到聚类结果。在这 里,特征空间维度数是 4,所以我们分为两个 2 维平面来进行可视化,即花萼的长度宽度和 花瓣的长度宽度这两张图。对比第一行和第三 行图,我们发现,相比之下,第三行图中聚类 的界限不是那么清晰,这是因为另外两个维度 也起到了影响聚类的效果。同样,对比第二行 和第四行的图,我们也能得到类似的结论。

在用四个特征共同聚类的时候,我们发现聚成 三类的结果较为合理,每一簇的大小比较均匀。

3结论

综上所述,kmeans 是一种聚类的基本方 法,由于 kmeans 聚类方法的特殊性,初始值 的选择对聚类结果影响很大。因此在聚类时需 要注意的是初始点的选择需要用 kmeans++, 这样能提高聚类效率与聚类的效果。

在聚类过程中,特征的选择也尤为重要, 实际上,特征的选择也就是选择用什么来区分 数据点,不同特征得到的聚类结果也有着不同 的物理含义,比如用花萼的属性聚类可以看做 区分花萼,而用花萼花瓣的属性(属性更全) 共同聚类可以看做是区分花本身。

总而言之,kmeans 通常能取得较好的聚 类效果,在优化初始化质心的方法并认真进行 特征选择后,聚类效果能得到进一步提升。

你可能感兴趣的:(sklearn,kmeans)