原数据:
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范围看是变瘦了。