均值:
方差:s才是方差,s^2是标准差
概率论中方差用来度量随机变量和其数学期望(即均值)之间的偏离程度
标准化:
方法一:使用sklearn.preprocessing.scale()函数
方法说明:
- X.mean(axis=0)用来计算数据X每个特征的均值;
- X.std(axis=0)用来计算数据X每个特征的方差;
- preprocessing.scale(X)直接标准化数据X。
from sklearn import preprocessing
import numpy as np
X = np.array([[ 1., -1., 2.],
[ 2., 0., 0.],
[ 0., 1., -1.]])
# calculate mean
print(X)
#求第一列的均值
X_mean = X.mean(axis=0)
print(X_mean)
# calculate variance
#求第一列的方差
X_std = X.std(axis=0)
print(X_std)
#标准化处理
# standardize X
X1 = (X-X_mean)/X_std
print(X1)
# use function preprocessing.scale to standardize X
X_scale = preprocessing.scale(X)
print(X_scale)
-----------------------------------------------执行结果-------------------------------
方法二:sklearn.preprocessing.StandardScaler类
from sklearn import preprocessing
import numpy as np
X = np.array([[ 1., -1., 2.],
[ 2., 0., 0.],
[ 0., 1., -1.]])
scaler = preprocessing.StandardScaler()
X_scaled = scaler.fit_transform(X)
X_scaled
----------------------------------执行结果------------------------------------
最大值小化:
公式:X_std = (X - X.min(axis=0)) / (X.max(axis=0) - X.min(axis=0)) ;
X_scaler = X_std/ (max - min) + min
Max,min分别是[1, 0 ]
from sklearn import preprocessing
import numpy as np
X = np.array([[ 1., -1., 2.],
[ 2., 0., 0.],
[ 0., 1., -1.],
[ -3., -2., -1.]
])
min_max_scaler = preprocessing.MinMaxScaler()
X_minMax = min_max_scaler.fit_transform(X)
print(X_minMax)
----------------------------执行结果------------------------
使用这种标准化方法的原因是,有时数据集的标准差非常非常小,有时数据中有很多很多零(稀疏数据)需要保存住0元素
以同样的方式对test数据进行处理:
>>> X_test = np.array([[ -3., -1., 4.]])
>>> X_test_minmax = min_max_scaler.transform(X_test)
>>> X_test_minmax
array([[-1.5 , 0. , 1.66666667]])
然后他下面还有很多的属性:
min_max_scaler.data_min_:找出每一列中的最小值