MinMaxScaler
官方文档:Link
>>> from sklearn.preprocessing import MinMaxScaler
>>> data = [[-1, 2], [-0.5, 6], [0, 10], [1, 18]]
>>> scaler = MinMaxScaler()
>>> print(scaler.fit(data))
MinMaxScaler()
>>> print(scaler.data_max_)
[ 1. 18.]
>>> print(scaler.transform(data))
[[0. 0. ]
[0.25 0.25]
[0.5 0.5 ]
[1. 1. ]]
>>> print(scaler.transform([[2, 2]]))
[[1.5 0. ]]
为什么需要特征缩放
这个问题的理解本身比起特征缩放的过程更加重要,也同时帮助理解每一个算法的过程。比如K-Means和SVM这两个算法需要计算点到点,点到面的距离来运行的,就需要对特征进行缩放防止其中一个特征对结果的影响过大。而决策树这样只需要水平垂直切割的算法就不需要特征缩放的操作。
具体的更进一步的理解可以参考此博客,写的非常具体。
什么时候需要特征缩放
个人理解是:当需要计算距离时,且两个特征的相差过大。(比如横轴的特征是0-100,纵轴的特征是100000-10000000)
- 线性和逻辑回归
- 神经网络
- 支持向量机
- K均值聚类
- K最近邻居
- 主成分分析