原數據:
df=pd.DataFrame({'a':[1,2,2,2,3,3,4,5,6]}) sns.kdeplot(df['a']) plt.xlim(-2,10) plt.show() df['a'].describe()
1 count 9.000000 2 mean 3.111111 3 std 1.615893 4 min 1.000000 5 25% 2.000000 6 50% 3.000000 7 75% 4.000000 8 max 6.000000 9 Name: a, dtype: float64
一、歸一化
1 df['b']=(df['a']-1)/(6-1) 2 sns.kdeplot(df['b']) 3 plt.xlim(-2,10) 4 plt.show() 5 df['b'].describe()
1 count 9.000000 2 mean 0.422222 3 std 0.323179 4 min 0.000000 5 25% 0.200000 6 50% 0.400000 7 75% 0.600000 8 max 1.000000 9 Name: b, dtype: float64
1)畫圖的時候限制xlim(-2,10) 2)畫圖的時候去掉xlim的限制
二、標准化
標准化后均值為0,方差為1.
df['b']=(df['a']-3.1111)/1.615893 sns.kdeplot(df['b']) plt.xlim(-6,10) plt.show() df['b'].describe()
1 count 9.000000 2 mean 0.000007 3 std 1.000000 4 min -1.306460 5 25% -0.687607 6 50% -0.068755 7 75% 0.550098 8 max 1.787804 9 Name: b, dtype: float64
1)限制xlim(-6,10) 2)去掉xlim限制
三、總結
從上述歸一化和標准化可以看出來,轉換后數據的均值和方差都發生了改變:
1)均值發生改變可以理解為數據的坐標都進行了平移轉換,均值其實也是隨之一樣轉換。
2)方差的改變是因為數據都壓縮在了更小的范圍內了,所以方差都變小了。
3)通過畫圖去掉xlim的限制,我們可以看出轉換后的圖的形狀跟原圖的形狀是一樣的,也就是圖的形狀本質上沒變,只是壓縮在更小的空間范圍內,從同一xlim范圍看是變瘦了。