标准化和归一化
为什么要进行标准化和归一化
输入的特征之间差距可能会非常大,不利于机器学习模型使用,标准化和归一化让特征统一量纲,也能加快模型收敛,加快梯度下降的求解速度(主要目的)。
标准化和归一化
参考https://blog.csdn.net/weixin_36604953/article/details/102652160
一个归一化的例子
拿鸢尾花数据集为例,我们读取后的特征是这样的:
使用Min-Max归一化处理的代码如下:
from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import MinMaxScaler
# datasets.fetch_20newsgroups(data_home=None, subset='all')
iris = datasets.load_iris()
# print(iris.DESCR)
x_train, x_test, y_train, y_test = train_test_split(iris.data, iris.target, test_size=0.2)
# print(x_train)
transfer = MinMaxScaler()
x_train_new = transfer.fit_transform(x_train)
print(x_train_new)
输出归一化结果如下:
可以看到不同特征的量纲得到了统一,且特征值在[0,1]的范围内。
一个标准化的例子
同样以鸢尾花数据集为例,标准化代码如下:
from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import MinMaxScaler
from sklearn.preprocessing import StandardScaler
# datasets.fetch_20newsgroups(data_home=None, subset='all')
iris = datasets.load_iris()
# print(iris.DESCR)
x_train, x_test, y_train, y_test = train_test_split(iris.data, iris.target, test_size=0.2)
# print(x_train)
# transfer = MinMaxScaler()
transfer = StandardScaler()
x_train_new = transfer.fit_transform(x_train)
print(x_train_new)
输出结果如下:
通过标准化,可以减少噪声异常值对特征的影响。