Python下的机器学习工具scikit-learn(-数据预处理)
参考自http://lib.csdn.net/article/machinelearning/1119和http://scikit-learn.org/stable/modules/preprocessing.html
(1)数据标准化(Standardization or Mean Removal and Variance Scaling)
进行标准化缩放的数据均值为0,具有单位方差。
#scale函数提供一种便捷的标准化转换操作,如下:
from sklearn import preprocessing #导入数据预处理包
X=[[1.,-1.,2.],
[2.,0.,0.],
[0.,1.,-1.]]
X_scaled=preprocessing.scale(X)
X_scaled
array([[ 0. , -1.22474487, 1.33630621],
[ 1.22474487, 0. , -0.26726124],
[-1.22474487, 1.22474487, -1.06904497]])
X_scaled.mean(axis=0)#preprocessing.scale()方法默认是按0轴(x坐标)缩放的
array([ 0., 0., 0.])
X_scaled.std(axis=0)
array([ 1., 1., 1.])
同样我们也可以通过preprocessing模块提供的Scaler(StandardScaler 0.15以后版本)工具类来实现这个功能:
scaler=preprocessing.StandardScaler().fit(X)
scaler
StandardScaler(copy=True, with_mean=True, with_std=True)
scaler.mean_
array([ 1. , 0. , 0.33333333])
scaler.scale_#scaler.std_ will be removed in 0.19. Use ``scale_`` instead
array([ 0.81649658, 0.81649658, 1.24721913])
scaler.transform(X)
array([[ 0. , -1.22474487, 1.33630621],
[ 1.22474487, 0. , -0.26726124],
[-1.22474487, 1.22474487, -1.06904497]])
(2)数据规范化(Normalization)
将矩阵缩放至[0,1]区间
import numpy as np
X_train = np.array([[ 1., -1., 2.],
[ 2., 0., 0.],
[ 0., 1., -1.]])
min_max_scaler=preprocessing.MinMaxScaler()
X_train_minmax=min_max_scaler.fit_transform(X_train)#每个元素减去行最小值然后除以每行最大值与最小值的差
X_train_minmax
array([[ 0.5 , 0. , 1. ],
[ 1. , 0.5 , 0.33333333],
[ 0. , 1. , 0. ]])
#上面的min_max_scaler可以用来适配新的数据
X_test=np.array([[-