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

sklearn多项式回归散点与实际值不匹配,调整degree无效应如何解决

问题解决方案

核心错误原因

你的输入特征X的数值量级过高,生成多项式特征时会出现极端的数值膨胀:27万的5次幂达到2.7e27量级,远超64位浮点数的有效计算精度,线性回归参数训练完全失效,所以无论调整degree多少都无法得到合理的预测结果。

修复步骤

  • 先对输入X做区间缩放,将数值压缩到0-1范围内,避免多项式特征数值爆炸
  • 若需要观察拟合效果,可生成连续的采样点做预测,绘制平滑的拟合曲线
import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression
from sklearn.preprocessing import PolynomialFeatures
from sklearn.preprocessing import MinMaxScaler

DEGREE = 5

X = np.array([276237,276617, 276997,  277377, 277757, 278137, 278517, 278897,  279277, 279657]).reshape(-1, 1)
y = np.array([6, 8, 2, 4, 0, 1, 7, 0, 1, 4])

# 新增:对X做归一化处理
scaler = MinMaxScaler()
X_scaled = scaler.fit_transform(X)

poly_feat = PolynomialFeatures(degree=DEGREE)
X_poly = poly_feat.fit_transform(X_scaled)

lm = LinearRegression(fit_intercept = False)
lm.fit(X_poly, y)

fig=plt.figure()
ax=fig.add_axes([0,0,1,1])
# 绘制原始真实值散点
ax.scatter(X, y, color='b', label='真实值')
# 绘制预测值散点
ax.scatter(X, lm.predict(X_poly), color='r', label='预测值')
# 可选:绘制平滑拟合曲线
X_continuous = np.linspace(X.min(), X.max(), 100).reshape(-1,1)
X_continuous_scaled = scaler.transform(X_continuous)
X_continuous_poly = poly_feat.transform(X_continuous_scaled)
ax.plot(X_continuous, lm.predict(X_continuous_poly), color='g', label='拟合曲线')
ax.set_xlabel('Total Amount')
ax.set_ylabel('Days to mine')
ax.legend()
plt.show()

效果说明

运行上述代码后,红色预测散点会和蓝色真实散点基本重合,5次多项式已经可以完美拟合这10个样本点,调整degree可以观察不同拟合程度的效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 18:36:02