【发布时间】:2021-11-03 18:40:04
【问题描述】:
我在 sci-kit learn 中的预训练数据上基于四度(1、3、7、11)的多项式回归特征对 Lasso 模型进行了正则化。我为区间 [0, 20] 上的 100 个均匀分布的点生成了预测,并将结果存储在一个 numpy 数组中。我的任务是返回每个 Lasso 模型相对于一个新的“黄金标准”测试集的 ????^2 分数,该测试集是从没有噪声的真正基础三次多项式模型生成的。下面的代码所基于的初始模型包括一个噪声常数。我必须通过为区间 [0, 20] 上的 100 个均匀间隔点中的每一个计算真正的无噪声基础函数 t^3/20 - t^2 - t 来计算这个新的测试集,并最终选择具有 R^2 的度数最适合给定的函数。到目前为止,这是我的代码:
degs = (1, 3, 7, 11)
las_r2 = []
preds = np.zeros((4,100))
for i, deg in enumerate(degs):
poly = PolynomialFeatures(degree=deg)
X_poly = poly.fit_transform(X_train)
linlasso = Lasso(alpha=0.01, max_iter = 10000).fit(X_poly, y_train)
y_poly = linlasso.predict(poly.fit_transform(np.linspace(0,20,100).reshape(-1,1)));
preds[i,:] = y_poly.transpose()
X_test_poly = poly.fit_transform(X_test)
las_r2.append(linlasso.score(X_test_poly, y_test))
answer = las_r2.max()
我不知道如何将上一段中提供的“黄金标准”函数合并到我的 for 循环中。
【问题讨论】:
标签: python scikit-learn regression lasso-regression