一.特征预处理–归一化
方法:
数值型数据:标准缩放:
1.归一化2.标准化3.缺失值
类别型数据:one-hot编码
时间类型:时间的切分
归一化
sklearn特征处理API
sklearn.preprocessing
sklearn归一化API:sklearn.preprocessing.MinMaxScaler
MinMaxScaler语法
MinMaxScaler(feature_range=(0,1)…)
每个特征缩放到给定范围(默认[0,1])
MinMaxScalar.fit_transform(X)
X:numpy array 格式的数据[n_samples,n_features]
返回值:转换后的形状相同的array
总结:注意在特定场景下最大值最小值是变化的,另外,最大值与最小值非常容易手异常点影响,所以这种方法鲁棒性交叉,值社和传统精确小数据常见。
小数据场景较少,日常使用中较少
def mm():
'''归一化处理
::return:None'''
mm = MinMaxScaler(feature_range=(2,3))
data = mm.fit_transform([[90, 2, 10, 40], [60, 4, 15, 45], [75, 3, 13, 46]])
print(data)
return None
if __name__=='__main__':
mm()
[[3. 2. 2. 2. ]
[2. 3. 3. 2.83333333]
[2.5 2.5 2.6 3. ]]
标准化
特点:通过对原始数据进行变化把数据变换到均值为0,方差为1范围内
归一化:如果出现异常点,影响了最大值和最小值,结果显然会发生变化
标准化:如果出现异常点,由于具有一定数据量,少量的异常点对于平均值的影响并不大,从而方差改变较小。
sklearn特征化API:scikit-learn.preprocessing.StandardScaler
StandardScaler()
处理之后每列来说所有数据都聚集在均值0附近标准差差为1
StandardScaler.fit_transform(X)
X:numpy array 格式的数据[n_samples,n_features]
返回值:转换后的形状相同的array
StandardScaler.mean_
原始数据中每列特征的平均值
StandardScaler.std_
原始数据每列特征的方差
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]]
标准化在已有样本足够多的情况下比较稳定,适合现代嘈杂大数据场景
缺失值
删除
填补:通过缺失值每行或每列的平均值、中位数进行填补,一般按列
scikit-learn.preprocessing.Imputer
Imputer(missing_values’NaN’,strategy=‘mean’,axis=0)
完成缺失值差不
Imputer.fit_transform(X)
X:numpy array 格式的数据[n_sanples,n_featrures]
返回值:转换后的形状相同的array
pandas:dropna 删除
filna 填补
数据格式:np.nan
replace(‘?’,np.nan)
关于np.nan(np.NaN)
1.numpy的数组中科院使用np.nan/np.NaN来代替缺失值,属于float类型
2.如果是文件中的一些缺失值,科院替换成nan,通过np.array转化成float型的数组即可。