MinMaxScaler

官方文档:Link

  1. >>> from sklearn.preprocessing import MinMaxScaler
  2. >>> data = [[-1, 2], [-0.5, 6], [0, 10], [1, 18]]
  3. >>> scaler = MinMaxScaler()
  4. >>> print(scaler.fit(data))
  5. MinMaxScaler()
  6. >>> print(scaler.data_max_)
  7. [ 1. 18.]
  8. >>> print(scaler.transform(data))
  9. [[0. 0. ]
  10. [0.25 0.25]
  11. [0.5 0.5 ]
  12. [1. 1. ]]
  13. >>> print(scaler.transform([[2, 2]]))
  14. [[1.5 0. ]]

为什么需要特征缩放

这个问题的理解本身比起特征缩放的过程更加重要,也同时帮助理解每一个算法的过程。比如K-Means和SVM这两个算法需要计算点到点,点到面的距离来运行的,就需要对特征进行缩放防止其中一个特征对结果的影响过大。而决策树这样只需要水平垂直切割的算法就不需要特征缩放的操作。
具体的更进一步的理解可以参考此博客,写的非常具体。

什么时候需要特征缩放

个人理解是:当需要计算距离时,且两个特征的相差过大。(比如横轴的特征是0-100,纵轴的特征是100000-10000000)

  • 线性和逻辑回归
  • 神经网络
  • 支持向量机
  • K均值聚类
  • K最近邻居
  • 主成分分析