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()