关于机器学习之特征缩放

Andrew在他的机器学习课程里强调,在进行学习之前要进行特征缩放,目的是保证这些特征都具有相近的尺度,这将帮助梯度下降算法更快地收敛。

python里常用的是preprocessing.StandardScaler()

公式为:(X-mean)/std  计算时对每个属性/每列分别进行。

将数据按期属性(按列进行)减去其均值,并处以其方差。得到的结果是,对于每个属性/每列来说所有数据都聚集在0附近,方差为1。

但是我在用k-means进行分类的时候发现,归一化之后分类的准确性反而下降了,应该是跟我的数据特征有关系。我的数据是三维坐标,我的要求是z轴不一样的数据一定不能放在一类里,所以我人为将z轴数据加剧区分度,比如原来是(10,20,0),(13,16,0),(23,16,10)。为了确保将z轴不同的数据区分开来,我将第三个数据改为了(23,16,100),这样z维的数据区别远大于其他两维,在聚类是就不会被淹没。但是当进行归一化之后,所有的数据都变得很小,我想要的区分度就不能体现了,就达不到我需要的聚类效果。

所以我觉得,是不是需要做归一化,以及如何做归一化还是需要根据情况而定。

posted @ 2018-06-25 10:48  S的数据之路  阅读(1425)  评论(0编辑  收藏  举报