sklearn预处理API
sklearn.preprocessing
数字型数据:标准缩放
1.归一化
2.标准化
类别型数据:one-hot编码
时间类型;时间划分
一、归一化
将原始数据进行变换,数据映射到默认【0,1】之间,为了让某一特征不会对结果造成太大影响
归一化的缺点:如果有异常值,将对最大值最小值造成影响
from sklearn.preprocessing import MinMaxScaler
def mm():
mm = MinMaxScaler(feature_range=(0, 1)) #可以指定范围
data = mm.fit_transform([[20, 70, 60, 50, 10],
[1, 0, 30, 100, 35],
[2, 7, 6, 5, 1]])
print(data)
if __name__ == "__main__":
mm()
[[3. 3. 3. 2.47368421 2.26470588]
[2. 2. 2.44444444 3. 3. ]
[2.05263158 2.1 2. 2. 2. ]]
二、标准化
不容易受异常点的影响 ,将原始数据转换成 均值为0,标准差为1
from sklearn.preprocessing import MinMaxScaler, StandardScaler
def stand():
"""
标准化缩放
:return:
"""
std = StandardScaler()
data = std.fit_transform([[1, -1, 3],
[2, 4, 2],
[4, 6, -1]])
print(data)
return None
if __name__ == "__main__":
stand()
[[-1.06904497 -1.35873244 0.98058068]
[-0.26726124 0.33968311 0.39223227]
[ 1.33630621 1.01904933 -1.37281295]]
三、如何处理缺失值
from sklearn.preprocessing import Imputer
import numpy as np
def im():
im = Imputer(missing_values='NaN', strategy='mean', axis=0)#缺失值为NaN,策略用平均值来填补,以列的平均值
data = im.fit_transform([[1, 2],
[np.nan, 3],
[7, 6]])
print(data)
if __name__ == "__main__":
im()
[[1. 2.]
[4. 3.]
[7. 6.]]
numpy的数组中可以使用np.nan/np.NaN来代替缺失值,属于float类型
如果是文件中的一些缺失值,可以替换成nan,通过np.array转化成float型的数组即可