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

多项式回归绘图异常,尝试解决方案后仍存问题求助

解决多项式回归曲线绘制异常及维度不匹配问题

你的问题出在两个核心点:

  • 原始绘图未对x排序,曲线按原始数据顺序连接导致混乱
  • 尝试排序时错误处理数组维度,引发维度不匹配报错

核心修正思路

  1. 禁止对多项式特征数组xp排序:xp是原始x生成的多项式特征,排序会破坏x与特征的对应关系,导致预测值和原始x错位。
  2. 基于原始x排序x和预测值:必须对原始x排序,同时用相同索引对y_pred排序,确保x与对应预测值一一对应。
  3. 统一数组维度:将二维数组转为一维,避免np.argsort返回二维索引引发的维度异常。

修正后的完整代码

import numpy as np
import matplotlib.pyplot as plt
from sklearn.preprocessing import PolynomialFeatures
from sklearn.linear_model import LinearRegression

# 假设data是已加载的数据集
x = data['LSTAT'].values.reshape(-1,1).copy()
y = data['MEDV'].values.reshape(-1,1).copy()

plt.figure(figsize=(8,5))

polynomial_features = PolynomialFeatures(degree=2)
xp = polynomial_features.fit_transform(x)

model = LinearRegression().fit(xp, y)
y_pred = model.predict(xp)

# 绘制原始数据散点图
plt.scatter(x, y)

# 处理排序与维度问题
x_flat = x.flatten()
sort_indices = np.argsort(x_flat)
# 对x和预测值按相同索引排序
x_sorted = x_flat[sort_indices]
y_pred_sorted = y_pred.flatten()[sort_indices]

# 绘制平滑的多项式回归曲线
plt.plot(x_sorted, y_pred_sorted, color='r')

plt.xlabel('LSTAT')
plt.ylabel('MEDV')
plt.show()

关键改动说明

  • x.flatten()和y_pred.flatten():将二维数组转为一维,避免np.argsort返回二维索引,解决(506, 1)与(506, 1, 1)的维度不匹配问题。
  • np.argsort(x_flat):获取原始x从小到大的排序索引,确保排序后的x与y_pred严格对应。
  • 保留xp原始顺序:维持原始x与多项式特征的对应关系,保证预测值的准确性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 06:54:23