特征预处理:
通过特定的统计方法(数学方法)将数据转换成算法要求的数据
API: sklearn. preprocessing
数值型数据:标准缩放:
1、归一化
2、标准化
3、缺失值
类别型数据:one-hot编码
时间类型:时间的切分
归一化:
特点:通过对原始数据进行变换把数据映射到(默认为[0,1])之间
公式:
归一化API: sklearn.preprocessing.MinMaxScaler
语法:
MinMaxScalar(feature_range=(0,1)…)
归一化步骤:
1、实例化MinMaxScalar
2、通过fit_transform转换
代码:
from sklearn.preprocessing import MinMaxScaler
def minmax():
"""归一化"""
min = MinMaxScaler()
data = min.fit_transform([[90, 2, 10, 40],
[60, 4, 15, 45],
[75, 3, 13, 46]])
print(data)
if __name__ == '__main__':
minmax()
运行结果:
各个特征具有同等的重要性:进行归一化
总结:
最大值与最小值非常容易受异常点影响,所以这种方法鲁棒性较差,只适合传统精确小数据场景
标准化:
1、特点:通过对原始数据进行变换把数据变换到均值为0,方差为1范围内
API: scikit-learn.preprocessing.StandardScaler
语法:
StandardScaler(…)
步骤:
1、实例化StandardScaler
2、通过fit_transform转换
代码:
from sklearn.preprocessing import MinMaxScaler, StandardScaler
def stand():
"""标准化"""
sta = StandardScaler()
data = sta.fit_transform([[1., -1., 3.],
[2., 4., 2.],
[4., 6., -1.]])
print(data)
if __name__ == '__main__':
stand()
运行结果:
总结 :
在已有样本足够多的情况下比较稳定,适合现代嘈杂大数据场景。
缺失值:
删除 | 如果每列或者行数据缺失值达到一定的比例,建议放弃整行或者整列,不建议 |
插补 | 可以通过缺失值每行或者每列的平均值、中位数来填充,一般来说是按列填补 |
API:sklearn.preprocessing.Imputer
缺失值格式:np.nan(如果不是进行替换)
语法:
missing_values='NaN':缺失值位置,一般就是固定写法
strategy='mean': 填补策略,默认
axis=0: 填补行还是列
from sklearn.preprocessing import MinMaxScaler, StandardScaler, Imputer
def im():
"""缺失值"""
# 0 :列
# 1 :行
im = Imputer(missing_values='NaN',strategy='mean',axis=0)
data = im.fit_transform([[1, 2],
[np.nan, 3],
[7, 6]])
print(data)
if __name__ == '__main__':
im()