1. 特征预处理
特征预处理:通过特定的统计方法/数学方法将数据转换成算法要求的数据。
数值型数据:归一化、标准化、缺失值
类别型数据:one-hot编码
时间型数据:时间划分
import sklearn.preprocessing
1.1 归一化
通过对原始数据进行变换把数据映射到默认为0~1之间,使得某一个特征不会对结果造成更大影响。
在特定场景下最大值、最小值是变化的,容易受异常点影响,所以归一化方法鲁棒性较差,只适合传统精确小数据场景。
from sklearn.preprocessing import MinMaxScaler
1. 实例化MinMaxScalar 参数feature_range=(start, end)代表结果范围,默认为0~1
2. 通过fit_transform转换
输入:
[[90, 2, 10, 40], [60, 4, 15, 45], [75, 3, 13, 46]]
from sklearn.preprocessing import MinMaxScaler
mm = MinMaxScaler()
data = mm.fit_transform([[90, 2, 10, 40], [60, 4, 15, 45], [75, 3, 13, 46]])
print(data)
输出:
[[1. 0. 0. 0. ]
[0. 1. 1. 0.83333333]
[0.5 0.5 0.6 1. ]]
1.2 标准化
通过对原始数据进行变换把数据变换到均值为0、方差为1的范围内。如果出现异常点,由于具有一定数据量,少量的异常点对平均值的影响并不大,从而方差改变较小。
from sklearn.preprocessing import StandardScaler
1. 实例化StandardScalar
2. 通过fit_transform转换
3. StandardScalar.mean_原始数据每列特征的 平均值
4. StandardScalar.std_ 原始数据每列特征的方差
输入:
[[ 1., -1., 3.],[ 2., 4., 2.],[ 4., 6., -1.]]
from sklearn.preprocessing import StandardScaler
std = StandardScaler()
data = std.fit_transform([[1., -1., 3.], [2., 4., 2.], [4., 6., -1.]])
print(data)
输出:
[[-1.06904497 -1.35873244 0.98058068]
[-0.26726124 0.33968311 0.39223227]
[ 1.33630621 1.01904933 -1.37281295]]
2. 缺失值处理
插补:使用缺失值每行/列的平均值/中位数填充。
from sklearn.impute import SimpleImputer
1. 实例化SimpleImputer(missing_values="", strategy="", axis=0)
missing_values:缺失值,例:np.nan
strategy:进行的填补策略,例:mean
2. 通过fit_transform转换
输入:
[[1, 2], [np.nan, 3], [7, 6]]
import numpy as np
from sklearn.impute import SimpleImputer
im = SimpleImputer(missing_values=np.nan, strategy='mean')
data = im.fit_transform([[1, 2], [np.nan, 3], [7, 6]])
print(data)
输出:
[[1. 2.]
[4. 3.]
[7. 6.]]