Kmeans算法的特征缩放

时间:2019-08-15 09:27:46

标签: python python-3.x machine-learning scikit-learn deep-learning

我知道在下面定义的KMeans算法中需要特征缩放 sklearn.cluster.KMeans

我的问题是使用KMeans之前是否需要手动完成此操作,还是KMeans会自动执行功能缩放?如果是自动的,请告诉我KMeans算法中的指定位置,因为我在此处的文档中找不到它:

https://scikit-learn.org/stable/modules/generated/sklearn.cluster.KMeans.html

Btw人说,Kmeans本身负责Feature Scaling。

2 个答案:

答案 0 :(得分:3)

据我所知,K-means不会自动执行特征缩放。无论如何,这是一个简单的过程,只需要另外两行代码即可。我建议使用StandardScaler功能缩放。这是一个很好的方法example

select r.student_email
from registrations r
where r.teacher_email = ?
intersect
select r.student_email
from registrations r
where r.teacher_email = ?
intersect
select r.student_email
from registrations r
where r.teacher_email = ?;

答案 1 :(得分:2)

如果变量的单位无可比拟(例如,身高以厘米为单位,体重以公斤为单位),那么您当然应该对变量进行标准化。即使变量具有相同的单位但显示出非常不同的方差,在K均值之前进行标准化仍然是一个好主意。您会看到,K均值聚类在空间的所有方向上都是“各向同性”的,因此倾向于产生或多或少的圆形(而不是拉长的)簇。在这种情况下,使方差不相等就等于对具有较小方差的变量赋予更大的权重,因此群集将倾向于沿具有较大方差的变量分离。enter image description here

还需要提醒的另一件事是,K-均值聚类结果可能对数据集中的对象顺序敏感1。合理的做法是多次运行分析,随机分配对象顺序。然后将这些运行的聚类中心平均,然后将这些中心输入为初始中心,以进行最后一次分析。

或其他多变量分析。

1具体来说,(1)中心初始化的某些方法对大小写顺序敏感; (2)即使初始化方法不敏感,有时结果也可能取决于将初始中心引入程序的顺序(特别是当数据中的距离相等时); (3)k-means算法的所谓运行均值版本自然对案例顺序敏感(在此版本中-它通常不与在线聚类一起经常使用-在将每个案例重新分配给每个案例之后都会进行质心的重新计算另一个群集)。

相关问题