特征预处理:归一化/标准化目的
特征的的单位或者大小相差较大,或者某特征的方差相比其他的特征要大出几个数量级,容易影响(支配)目标结果,使得一些模型(算法)无法学习到其他的特征.
归一化
归一化内容
通过对原始数据进行变换把数据映射到【mi,mx】(默认为[0,1])之间
举个例子
归一化的API
sklearn.preprocessing.MinMaxScaler (feature_range=(0,1)… )
feature_range 缩放区间
fit_transform(X) 将特征进行归一化缩放
# 特征预处理(归一化)
# 1导入工具包
from sklearn.preprocessing import MinMaxScaler
# 准备数据
data = [[90, 2, 10, 40],
[60, 4, 15, 45],
[75, 3, 13, 46]]
# 3实例化特征工程方法
transform = MinMaxScaler()
# 4处理
data = transform.fit_transform(data)
# 5输出
print(data)
#结果
[[1. 0. 0. 0. ]
[0. 1. 1. 0.83333333]
[0.5 0.5 0.6 1. ]]
标准化
数据标准化内容
通过对原始数据进行标准化,转换为均值为0标准差为1的标准正态分布的数据
数据标准化API
- sklearn.preprocessing. StandardScaler()
- fit_transform(X) 将特征进行归一化缩放
#标准化预处理
#导包
from sklearn.preprocessing import StandardScaler
#准备数据
data = [[90, 2, 10, 40],
[60, 4, 15, 45],
[75, 3, 13, 46]]
#实例化特征工程方法
transform = StandardScaler()
#4处理
data = transform.fit_transform(data)
#输出
print(data)#标准化后的数据
print('-'*30)
print(transform.mean_)#平均值
print('-'*30)
print(transform.var_)#方差
#结果
[[ 1.22474487 -1.22474487 -1.29777137 -1.3970014 ]
[-1.22474487 1.22474487 1.13554995 0.50800051]
[ 0. 0. 0.16222142 0.88900089]]
------------------------------
[75. 3. 12.66666667 43.66666667]
------------------------------
[150. 0.66666667 4.22222222 6.88888889]
正态分布
正态分布是一种概率分布,大自然很多数据符合正态分布
也叫高斯分布,钟形分布。正态分布记作N(μ,σ ) ,μ决定了其位置,
其标准差σ决定了分布的幅度,当μ = 0, σ = 1时的正态分布是标准正态分布
方差
σ²
是在概率论和统计方差衡量一组数据时离散程度的度量,其中M为均值 n为数据总数
标准差σ是方差开根号
正态分布的3σ法则(68-95-99.7 法则)
异常点1
数据归一化
如果
出现异常点,影响了最大值和最小值
,那么结果显然会发生改变
应用场景:最大值与最小值非常容易受异常点影响,鲁棒性较差,只适合传统精确小数据场景
API : sklearn.preprocessing.MinMaxScaler (feature_range=(0,1)… )
数据标准化
如果出现异常点,由于具有一定数据量,少量的异常点对于平均值的影响并不大
应用场景:适合现代嘈杂大数据场景。
sklearn.preprocessing.StandardScaler( )