定义多项式的最大阶数

max_degree = 20 # 多项式的最大阶数

定义训练集和测试集的大小

n_train, n_test = 100, 100 # 训练集和测试集的大小

创建一个用于存储真实权重的数组,并分配大量空间

true_w = np.zeros(max_degree) # 创建一个用于存储真实权重的数组,并分配大量空间

将前4个元素设置为[5, 1.2, -3.4, 5.6]

true_w[0:4] = np.array([5, 1.2, -3.4, 5.6]) # 将前4个元素设置为[5, 1.2, -3.4, 5.6]

生成一个形状为(n_train+n_test, 1)的正态分布随机数矩阵

features = np.random.normal(size=(n_train + n_test, 1)) # 生成一个形状为(n_train+n_test, 1)的正态分布随机数矩阵

打乱features的顺序

np.random.shuffle(features) # 打乱features的顺序

生成一个形状为(n_train+n_test, max_degree)的多项式特征矩阵

poly_features = np.power(features, np.arange(max_degree).reshape(1, -1)) # 生成一个形状为(n_train+n_test, max_degree)的多项式特征矩阵

对每一列进行归一化处理

for i in range(max_degree): poly_features[:, i] /= math.gamma(i + 1) # 对每一列进行归一化处理,gamma(n)=(n-1)!

生成标签,维度为(n_train+n_test,)

labels = np.dot(poly_features, true_w) # 生成标签,维度为(n_train+n_test,)

添加正态分布噪声

labels += np.random.normal(scale=0.1, size=labels.shape) # 添加正态分布噪声

Python 多项式回归代码注释详解

原文地址: https://www.cveoy.top/t/topic/ntHJ 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录