Numpy学习——随机抽样
创建一个形为5×3的二维数组,以包含5到10之间的随机数
import numpy as np
from matplotlib import pyplot as plt
np.random.seed(20201125) # 设置随机数种子
array_2d = np.random.uniform(low=5, high=10, size=(5, 3)) # 生成2维数组
print(array_2d)
[[9.04907965 5.17898621 6.03373286]
[9.71288485 8.12069443 5.06154747]
[6.56454777 5.25362105 7.39799186]
[8.6666706 6.1580927 9.67474644]
[8.39923643 6.77485464 7.81353644]]
创建分别具有5000个数据的训练集和测试集。
模拟
y(x)={sin(x)x,x≠1,1,x=1.
y(x)=
\begin{cases}
\begin{array}{lcl}
\cfrac{\sin(x)}{x}&,&x\ne1,\\
1&,&x=1.
\end{array}
\end{cases}
y(x)=⎩⎨⎧xsin(x)1,,x=1,x=1.
其中xxx在间隔(-10,10)上均匀随机分布。为了使回归问题“真实”,大的均匀噪声分布在[-0.2,0.2]已添加到所有训练样本中,同时测试数据保持无噪声。
noise = np.random.uniform(low=-0.2, high=0.2, size=5000) # 生成噪声
train_X = np.random.uniform(low=-10, high=10, size=5000) # 生成训练集X
train_Y = np.sin(train_X)/train_X+noise # 训练集Y加上噪声
test_X = np.random.uniform(low=-10, high=10, size=5000) # 生成测试集X
test_Y = np.sin(test_X)/test_X # 测试集Y
plt.rcParams['figure.figsize'] = (12, 8) # 设定画板大小
plt.scatter(train_X, train_Y, s=0.1, label='Expected') # 画散点图
plt.scatter(test_X, test_Y, s=0.1, label='Actual')
plt.legend() # 显示图例
plt.show()