特征预处理
将特征数据转化为更加适合算法模型的特征数据的过程。
内容:
- 归一化
- 标准化
API sklearn.preprocessing
归一化
将数值映射到区间[0,1]
-
缺点
- 鲁棒性较差,容易受异常值的影响,只适合传统的精确小数据场景
-
计算公式
x ′ = x − m i n m a x − m i n x'=\frac{x-min}{max-min} x′=max−minx−min
-
API
sklearn.preprocessing.MinMaxScaler
代码示例
from sklearn.preprocessing import MinMaxScaler
def minMaxScalerDemo():
# feature_range是映射到的区间
transfer = MinMaxScaler(feature_range是映射到的区间=(0,1))
data = [[-1, 2], [-0.5, 6], [0, 10], [1, 18]]
res = transfer.fit_transform(data)
print(res)
if __name__ == '__main__':
minMaxScalerDemo()
输出
[[0. 0. ]
[0.25 0.25]
[0.5 0.5 ]
[1. 1. ]]
标准化
将数据变换到均值为0,标准差为1的范围内
x
′
=
x
−
m
e
a
n
σ
x'=\frac{x-mean}{\sigma}
x′=σx−mean
- 少量异常值对均值和标准差影响不大
代码示例
from sklearn.preprocessing import StandardScaler
def standardScalerDemo():
transfer = StandardScaler()
data = [[-1, 2], [-0.5, 6], [0, 10], [1, 18], [10, 5]]
# transfer.fit(data)
res = transfer.fit_transform(data)
print(res)
if __name__ == '__main__':
standardScalerDemo()