日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

numpy 归一化_归一化(MinMax)和标准化(Standard)的区别

發(fā)布時間:2023/11/30 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 numpy 归一化_归一化(MinMax)和标准化(Standard)的区别 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

此文參考https://blog.csdn.net/u010947534/article/details/86632819

定義上的區(qū)別

歸一化:將數(shù)據(jù)的值壓縮到0到1之間,公式如下

標準化:將數(shù)據(jù)所防偽均值是0,方差為1的狀態(tài),公式如下:

歸一化、標準化的好處:

在機器學(xué)習(xí)算法的目標函數(shù)(例如SVM的RBF內(nèi)核或線性模型的l1和l2正則化),許多學(xué)習(xí)算法中目標函數(shù)的基礎(chǔ)都是假設(shè)所有的特征都是零均值并且具有同一階數(shù)上的方差。如果某個特征的方差比其他特征大幾個數(shù)量級,那么它就會在學(xué)習(xí)算法中占據(jù)主導(dǎo)位置,導(dǎo)致學(xué)習(xí)器并不能像我們說期望的那樣,從其他特征中學(xué)習(xí)。

舉一個簡單的例子,在KNN中,我們需要計算待分類點與所有實例點的距離。假設(shè)每個實例點(instance)由n個features構(gòu)成。如果我們選用的距離度量為歐式距離,如果數(shù)據(jù)預(yù)先沒有經(jīng)過歸一化,那么那些絕對值大的features在歐式距離計算的時候起了決定性作用。

從經(jīng)驗上說,歸一化是讓不同維度之間的特征在數(shù)值上有一定比較性,可以大大提高分類器的準確性。

歸一化和標準化的對比分析:

首先明確,在機器學(xué)習(xí)中,標準化是更常用的手段,歸一化的應(yīng)用場景是有限的。我總結(jié)原因有兩點:

  • 1、標準化更好保持了樣本間距。當(dāng)樣本中有異常點時,歸一化有可能將正常的樣本“擠”到一起去。比如三個樣本,某個特征的值為1,2,10000,假設(shè)10000這個值是異常值,用歸一化的方法后,正常的1,2就會被“擠”到一起去。如果不幸的是1和2的分類標簽還是相反的,那么,當(dāng)我們用梯度下降來做分類模型訓(xùn)練時,模型會需要更長的時間收斂,因為將樣本分開需要更大的努力!而標準化在這方面就做得很好,至少它不會將樣本“擠到一起”。
  • 2、標準化更符合統(tǒng)計學(xué)假設(shè)
    對一個數(shù)值特征來說,很大可能它是服從正態(tài)分布的。標準化其實是基于這個隱含假設(shè),只不過是略施小技,將這個正態(tài)分布調(diào)整為均值為0,方差為1的標準正態(tài)分布而已。

我們可以先畫三個圖來試驗一下

先畫標準正態(tài)分布形成的圖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',fontsize=20) for idx, array in enumerate([test_arr,test_std,test_mx]):axes[idx].hist(array,bins=10)

接下來看看偏態(tài)數(shù)據(jù)形成的圖test_arr = np.concatenate((test_arr,np.linspace(5000,100000,num=30)),axis=0) 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',fontsize=20) for idx, array in enumerate([test_arr,test_std,test_mx]):axes[idx].hist(array[:10010],bins=50)

可以看到標準化沒有改變原始數(shù)據(jù)的極值例子,而歸一化則將所有數(shù)據(jù)都壓縮到了01區(qū)間內(nèi),改變了數(shù)據(jù)的分布。

總結(jié)

以上是生活随笔為你收集整理的numpy 归一化_归一化(MinMax)和标准化(Standard)的区别的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。