特征的预处理:对数据进行处理。通过特定的统计方法(数学方法)将数据转换成算法要求的数据
两种方式:
- 归一化
- 标准化
数值型数据:标准缩放
-
归一化:通过对原始数据进行变换把数据映射到0-1之间。
在这里插入图片描述
- 作用于:每一列
- 什么时候进行归一化:当多个特征同等重要的时候,使得一个特征不会对最后的结果造成更大的影响,只适合传统精确小数据场景
- 数据当中如果异常点较多,会有什么影响?:异常点对最大值最小值影响太大
- 缺点:归一化对异常点的数据处理不是很好
-
标准化:使用最广泛的,通过对原始数据进行变换把数据变换到均值为0,标准差(方差开方)为1的范围内。作用于每一列。
公式见ppt74页
- ps:由于数据量(较大)的关系,异常点对平均值的影响不大(公式里面用到了平均值)
- 特点:在已有样本足够多的情况下比较稳定,适合现代嘈杂大数据场景
- 缺失值:主要是用pandas进行处理
- 如何处理:
- 删除(结合数据量考虑,一般不考虑删除)
- 填补:可以按行或按列,一般建议按列
- sklearn中处理缺失值的类:Imputer。注意:数据必须是np.nan
pandas中对缺失数据进行处理:pd.dropna,pd.fillna。注意:缺失值应为np.nan,float类型
- 如何处理:
-
类别型数据:ont-hot编码
-
时间类型:时间的切分
-
sklearn特征处理api:sklearn.preprocessing.
from sklearn.preprocessing import MinMaxScaler
def mm():
"""
归一化处理
:return: None
"""
mm = MinMaxScaler(feature_range=(0, 1)) # 参数的默认范围是0-1
data = mm.fit_transform([[90, 2, 10, 40],
[60, 4, 15, 45],
[75, 3, 13, 46]]
) # 注意:数据为2维列表形式
print(data)
from sklearn.preprocessing import StandardScaler
def stand():
"""
标准化缩放
:return: None
"""
std = StandardScaler()
data = std.fit_transform([[1., -1., 3.],
[2., 4., 2.],
[4., 6., -1.]]
) # 注意,2维数组
print(data) # 会发现每一列(每一个特征)的平均值都是0
return None
from sklearn.impute import SimpleImputer
import numpy as np
def im():
"""
缺失值处理
:return: None
"""
im = SimpleImputer(missing_values=np.nan, strategy="mean")
data = im.fit_transform([[1, 2],
[np.nan, 3],
[7, 6]]
)
print(data) #(1,0)位置为4
return None
if __name__ == "__main__":
# mm()
# stand()
im()
网友评论