github上面的一個項目,分為level1,level2,level3 三個等級的難度。
練習題1:
隨機生成一列數據,畫出這些數據的分布、概率密度曲線,以及進行歸一化、標准化之后的分布、概率密度曲線。
解答:
# 歸一化、標准化、中心化
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
original_data = np.random.exponential(size = 1000)
scaled_data = (original_data - original_data.min())/(original_data.max()-original_data.min())
fig,ax = plt.subplots(1,2)
sns.distplot(original_data,ax=ax[0]) #直方圖
ax[0].set_title("Original Data")
sns.distplot(scaled_data,ax = ax[1])
ax[1].set_title('Scaled Data')
plt.show()
original_data = 6*np.random.rand(1000)+7
scaled_data = (original_data - original_data.mean())/original_data.std()
fig,ax = plt.subplots(1,2)
sns.distplot(original_data,ax=ax[0])
ax[0].set_title("Original Data")
sns.distplot(scaled_data,ax = ax[1])
ax[1].set_title('Scaled Data')
plt.show()
練習題2:
一個數據集 身高:1.7,1.8,1.9
體重:70,80,90,分別進行歸一化、標准化,看數據值及其分布圖。
練習題3:
同題1,自動生成二維分布數據集,畫圖展示。進行歸一化、標准化后,畫圖展示。
解答:
x = np.array([1.7,1.8,1.9,1.75,1.85])
y = np.array([60,70,80,85,65])
plt.scatter(x,y)
plt.show()
x_scaled = preprocessing.scale(x)
y_scaled = preprocessing.scale(y)
plt.scatter(x_scaled,y_scaled)
plt.show()
x_normalize = (x-x.min())/(x.max()-x.min())
y_normalize = (y-y.min())/(y.max()-y.min())
plt.scatter(x_normalize,y_normalize)
plt.show()