'''
特征预处理:通过特定的统计方法,将数据转换成算法要求的数据 。包括数据缺失,数据填充等
数值型数据:
标准缩放:
1、归一化:通过对原始数据进行变换把数据映射到(默认为0,1)之间;
计算公式:x' = (x-min)/(max-min) x'' = x'*(mx-mi)+mi
目的:使得某一个特征对最终结果不会造成更大的影响
弊端:异常点对归一化的最大值最小值影响很大。
适用场景:鲁棒性差,只适合小数据的场景(无异常数据)
api:MinMaxScaler(feature_range=(2,4))
MinMaxScaler.fit_transform()
2、标准化:通过对原始数据进行变换把数据变换到均值为0,标准差为1范围内
公式:x' = (x-mean)/a 其中mean为平均值;a为标准差
方差:var = ((x1-mean)^2 +(x2-mean)^2+ ....)/n ,其中var为方差,n为每个特征样本数 ;方差可以考量数据的稳定性
标准差:对方差开平方,即var^(1/2)
优点:对异常点没有影响,适合嘈杂数据场景
api:StandardScaler()
StandardScaler.fit_transform()
StandardScaler.mean_
StandardScaler.with_std
3、缺失值:主要使用pandas处理(np.nan为float类型)
删除:(不建议) dropna()
填充:填充使用列的均值、中位数、众数 fillna()
替换:replace("?",np.nan)
Api:Imputer(missing_values='NaN',strategy="mean")
Imputer.fit_transform()
类别型数据: one-hot编码
时间类型: 时间的切分
特征预处理Api:
sklearn.preprocessing
归一化Api:
'''
# 1. 最大最小归一化
# 2. 标准化
# 3. 缺失值处理
from sklearn.preprocessing import MinMaxScaler, StandardScaler, Imputer
import numpy as np
def mm():
"""
归一化处理
:return:None
"""
"""feature_range -- 指定归一化的范围,默认是[0,1]"""
mm = MinMaxScaler(feature_range=(2,5))
data = mm.fit_transform([[90,2,10,40],[60,4,15,45],[75,3,13,46]])
print(data)
def stand():
"""
标准化缩放
:return:None
"""
"""在已有样本足够多的情况下比较稳定,适合
现代嘈杂大数据场景。
"""
std = StandardScaler()
data = std.fit_transform([[ 1., -1., 3.],[ 2., 4., 2.],[ 4., 6., -1.]])
print(data)
def im():
"""
缺失值处理
:return:
"""
# NaN, nan
im = Imputer(missing_values='NaN', strategy="mean", axis=0)
"""axis=0 -- 表示按照列进行取平均值"""
data = im.fit_transform([[1, 2], [np.nan, 3], [7, 6]])
print(data)
if __name__ == '__main__':
mm()
stand()
im()
输出结果如下: