gpt4 book ai didi

python - 在 sklearn 中拟合多项式回归曲线时遇到问题

转载 作者:行者123 更新时间:2023-12-01 02:52:59 25 4
gpt4 key购买 nike

我是 sklearn 新手,我有一个相当简单的任务:给定 15 个点的散点图,我需要

  1. 取其中 11 个作为我的“训练样本”,
  2. 通过这11个点拟合一条3次多项式曲线;
  3. 在 15 个点上绘制生成的多项式曲线。

但是我在第二步就卡住了。

这是数据图:

%matplotlib notebook

import numpy as np from sklearn.model_selection
import train_test_split from sklearn.linear_model
import LinearRegression from sklearn.preprocessing import PolynomialFeatures

np.random.seed(0)
n = 15
x = np.linspace(0,10,n) + np.random.randn(n)/5
y = np.sin(x)+x/6 + np.random.randn(n)/10

X_train, X_test, y_train, y_test = train_test_split(x, y, random_state=0)

plt.figure() plt.scatter(X_train, y_train, label='training data')
plt.scatter(X_test, y_test, label='test data')
plt.legend(loc=4);

然后,我获取 X_train 中的 11 个点,并使用 3 阶多边形特征对它们进行变换,如下所示:

degrees = 3
poly = PolynomialFeatures(degree=degree)

X_train_poly = poly.fit_transform(X_train)

然后我尝试通过变换后的点拟合一条线(注意:X_train_poly.size = 364)。

linreg = LinearRegression().fit(X_train_poly, y_train)

我收到以下错误:

ValueError: Found input variables with inconsistent numbers of samples: [1, 11]

我已经阅读了解决类似且通常更复杂的问题的各种问题(例如 Multivariate (polynomial) best fit curve in python? ),但我无法从中提取解决方案。

最佳答案

问题在于 X_train 和 y_train 中的维度。它是一个一维数组,因此它将每个 X 记录视为一个单独的变量。

按如下方式使用 .reshape 命令应该可以解决问题:

# reshape data to have 11 records rather than 11 columns
X_trainT = X_train.reshape(11,1)
y_trainT = y_train.reshape(11,1)

# create polynomial features on the single va
poly = PolynomialFeatures(degree=3)
X_train_poly = poly.fit_transform(X_trainT)

print (X_train_poly.shape)
#

linreg = LinearRegression().fit(X_train_poly, y_trainT)

关于python - 在 sklearn 中拟合多项式回归曲线时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44524220/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com