You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

scikit-learn中Lasso回归针对真实三次模型计算R²分数的实现问题

解决方案

你不需要把黄金标准的计算逻辑塞到for循环里重复执行,提前一次性生成黄金标准测试集即可,修改后的完整代码如下:

import numpy as np
from sklearn.preprocessing import PolynomialFeatures
from sklearn.linear_model import Lasso

# 第一步:提前生成无噪声黄金标准测试集
t_test = np.linspace(0,20,100).reshape(-1,1)
y_test_gold = (t_test**3)/20 - t_test**2 - t_test

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)
    # 存储[0,20]区间100个点的预测结果逻辑不变
    y_poly = linlasso.predict(poly.fit_transform(t_test))
    preds[i,:] = y_poly.ravel()
    # 关键修改:使用黄金标准测试集计算R²得分
    X_test_poly = poly.transform(t_test)
    las_r2.append(linlasso.score(X_test_poly, y_test_gold))

# 可同时获取最大R²和对应的最优多项式阶数
best_r2 = max(las_r2)
best_deg = degs[las_r2.index(best_r2)]

修改说明

  • 提前生成黄金标准测试集t_test和y_test_gold,避免在循环内重复计算,提升运行效率
  • 替换原代码中的X_test、y_test为黄金标准数据,保证R²得分是和无噪声真实函数对比计算,符合任务要求
  • 把测试集侧的poly.fit_transform调用改为transform,避免重复拟合多项式特征,符合scikit-learn的使用规范
  • 新增最优阶数提取逻辑,除了最大R²值外可以直接得到对应的最优多项式阶数,满足最终选型需求

内容的提问来源于stack exchange,提问作者Hefe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 17:45:03