重庆网站推广产品企业,现在自己做网站卖东西行么,施工企业研发资金投入情况说明,做网站必须托管服务器吗此文参考https://blog.csdn.net/u010947534/article/details/86632819定义上的区别归一化#xff1a;将数据的值压缩到0到1之间#xff0c;公式如下标准化#xff1a;将数据所防伪均值是0#xff0c;方差为1的状态#xff0c;公式如下#xff1a;归一化、标准化的好处将数据的值压缩到0到1之间公式如下标准化将数据所防伪均值是0方差为1的状态公式如下归一化、标准化的好处在机器学习算法的目标函数(例如SVM的RBF内核或线性模型的l1和l2正则化)许多学习算法中目标函数的基础都是假设所有的特征都是零均值并且具有同一阶数上的方差。如果某个特征的方差比其他特征大几个数量级那么它就会在学习算法中占据主导位置导致学习器并不能像我们说期望的那样从其他特征中学习。举一个简单的例子在KNN中我们需要计算待分类点与所有实例点的距离。假设每个实例点instance由n个features构成。如果我们选用的距离度量为欧式距离如果数据预先没有经过归一化那么那些绝对值大的features在欧式距离计算的时候起了决定性作用。从经验上说归一化是让不同维度之间的特征在数值上有一定比较性可以大大提高分类器的准确性。归一化和标准化的对比分析首先明确在机器学习中标准化是更常用的手段归一化的应用场景是有限的。我总结原因有两点1、标准化更好保持了样本间距。当样本中有异常点时归一化有可能将正常的样本“挤”到一起去。比如三个样本某个特征的值为1,2,10000假设10000这个值是异常值用归一化的方法后正常的1,2就会被“挤”到一起去。如果不幸的是1和2的分类标签还是相反的那么当我们用梯度下降来做分类模型训练时模型会需要更长的时间收敛因为将样本分开需要更大的努力而标准化在这方面就做得很好至少它不会将样本“挤到一起”。2、标准化更符合统计学假设对一个数值特征来说很大可能它是服从正态分布的。标准化其实是基于这个隐含假设只不过是略施小技将这个正态分布调整为均值为0方差为1的标准正态分布而已。我们可以先画三个图来试验一下先画标准正态分布形成的图import numpy as np
from sklearn.preprocessing import StandardScaler,MinMaxScaler
import matplotlib.pyplot as plttest_arr numpy.random.randn(10000) * 100 500
std_sca StandardScaler()
mmx_sca MinMaxScaler()test_std std_sca.fit_transform(test_arr.reshape(-1,1))
test_mmx mmx_sca.fit_transform(test_arr.reshape(-1,1))fig,axes plt.subplots(1,3,figsize(20,5))plt.suptitle(Original Array After Standard Transform After MinMax TransForm,fontsize20)
for idx, array in enumerate([test_arr,test_std,test_mx]):axes[idx].hist(array,bins10)接下来看看偏态数据形成的图test_arr np.concatenate((test_arr,np.linspace(5000,100000,num30)),axis0)
std_sca StandardScaler()
mmx_sca MinMaxScaler()test_std std_sca.fit_transform(test_arr.reshape(-1,1))
test_mmx mmx_sca.fit_transform(test_arr.reshape(-1,1))fig,axes plt.subplots(1,3,figsize(20,5))
plt.suptitle(Original Array After Standard Transform After MinMax TransForm,fontsize20)
for idx, array in enumerate([test_arr,test_std,test_mx]):axes[idx].hist(array[:10010],bins50)可以看到标准化没有改变原始数据的极值例子而归一化则将所有数据都压缩到了01区间内改变了数据的分布。