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

多项式回归未生成合适假设,求解X=20的预测方案及拟合优化

解决方案:优化多项式回归拟合曲线并预测X=20的薪资

首先看你的数据,薪资随着职位等级的增长是指数级上升的,用degree=2的多项式确实很难精准捕捉这个趋势,而且原代码绘图时直接用离散的X点,导致曲线看起来不够平滑。下面分两部分解决你的问题:

一、生成更优的拟合曲线

我们可以通过两个调整来优化拟合效果:

  1. 提高多项式的degree值(比如尝试4或5,这个可以根据拟合效果微调)
  2. 生成连续的X值来绘制平滑的拟合曲线,而不是用原有的离散整数点

修改后的代码如下:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

# 原始数据
X = [[1], [2], [3], [4], [5], [6], [7], [8], [9], [10]]
y = [45000, 50000, 60000, 80000, 110000, 150000, 200000, 300000, 500000, 1000000]

from sklearn.linear_model import LinearRegression
from sklearn.preprocessing import PolynomialFeatures

# 调整多项式阶数为4,更适配数据的增长趋势
poly_reg = PolynomialFeatures(degree=4)
X_poly = poly_reg.fit_transform(X)

linearReg_4 = LinearRegression()
linearReg_4.fit(X_poly, y)

# 生成连续的X值用于绘制平滑曲线
X_smooth = np.arange(min([x[0] for x in X]), max([x[0] for x in X]), 0.1)
X_smooth = X_smooth.reshape((len(X_smooth), 1))

# 绘制图像
plt.scatter(X, y, color="red", label="实际薪资")
plt.plot(X_smooth, linearReg_4.predict(poly_reg.transform(X_smooth)), color="blue", label="拟合曲线")
plt.xlabel("职位等级")
plt.ylabel("薪资")
plt.legend()
plt.show()

你可以尝试调整degree的值(比如3、5),观察哪个阶数的拟合效果最符合你的数据规律。

二、求解X=20时的预测值

要预测X=20的薪资,只需要用训练好的poly_reg对[[20]]做特征转换,再传入训练好的线性模型即可,代码如下:

# 预测X=20的薪资
X_pred = [[20]]
X_pred_poly = poly_reg.transform(X_pred)
salary_pred = linearReg_4.predict(X_pred_poly)

print(f"职位等级20对应的预测薪资为:{salary_pred[0]:.2f}")

需要注意的是:因为你的数据只到X=10,预测X=20属于外推预测,这个结果的可靠性会随着与现有数据范围的距离增加而降低,仅供参考。

内容的提问来源于stack exchange,提问作者Ashish.k

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:35:31