import numpy as np
import math
# 设置最高次数为20的多项式
max_degree = 20
# 训练集和测试集的大小
n_train, n_test = 100, 100
# 初始化真实权重,其中前四项为5, 1.2, -3.4, 5.6
true_w = np.zeros(max_degree)
true_w[0:4] = np.array([5, 1.2, -3.4, 5.6])
# 生成随机特征值
features = np.random.normal(size=(n_train + n_test, 1))
np.random.shuffle(features)
# 生成多项式特征,将特征的每个值都取 max_degree 次方
poly_features = np.power(features, np.arange(max_degree).reshape(1, -1))
# 归一化多项式特征,除以阶乘项(math.gamma)来保证每一项的系数在计算中得到合适的缩放
for i in range(max_degree):
poly_features[:, i] /= math.gamma(i + 1)
# 生成标签,即将多项式特征与真实权重相乘
labels = np.dot(poly_features, true_w)
# 在标签中添加均值为0、标准差为0.1的正态分布噪声,模拟真实场景中的随机误差
labels += np.random.normal(scale=0.1, size=labels.shape)
02-25
03-06
369
09-06
392
03-21
01-05
05-24
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交