在机器学习中,对于用到距离的算法一般都需要对数据进行标准化。
一、标准化的目的
- 去除数据量纲的影响
- 提高模型的解释性
- 加快模型的收敛速度
二、标准化的方法
常用的标准化的方法有两种:中心化和0-1标准化
1、中心化
计算方法:X减去均值再除以标准差
2、0-1标准化
计算方法:X减去最小值再除以最大值与最小值的差。
即:X_std=(X-X.min(axis=0)) / (X.max(axis=0)-X.min(axis=0))
三、sklearn中用到的模块
from sklearn.preprocessing import StandardScaler #中心化
from sklearn.preprocessing import MinMaxScaler #0-1标准化
四、使用方法
(1)scaler = StandardScaler()
scaler.fit(train_data)
train_data
=
scaler.transform
(
train_data
)
(2)min_max_scaler = MinMaxScaler()
min_max_scaler.fit(X_train)
X_train
=
min_max_scaler.transform
(
X_train
)
五、举例
# -*- coding: utf-8 -*-
"""
数据标准化
"""
import numpy as np
#创建一个二维数组
X_train = np.array([[1,-1,2],
[2,0,0],
[0,1,-1]])
X_train.max(axis=0)
X_train.min(axis=0)
from sklearn.preprocessing import StandardScaler
from sklearn.preprocessing import MinMaxScaler
#Z-score标准化,均值为0,方差为1.
scaler = StandardScaler() #实例化
scaler.fit(X_train)
X_scaler = scaler.transform(X_train)
X_scaler.mean(axis=0)
X_scaler.std(axis=0)
X_scaler.var(axis=0)
#0-1标准化
min_max_scaler = MinMaxScaler() #实例化
min_max_scaler.fit(X_train)
X_minmax = min_max_scaler.transform(X_train)