gpt4 book ai didi

python - 线性回归器无法预测一组值;错误 : ValueError: shapes (100, 1) 和 (2,1) 未对齐 : 1 (dim 1) ! = 2(暗淡 0)

转载 作者:行者123 更新时间:2023-12-01 07:34:59 28 4
gpt4 key购买 nike

我有 2 个 numpy 数组:

x= np.linspace(1,10,100) + np.random.randn(n)/5
y = np.sin(x)+x/6 + np.random.randn(n)/10

我想使用这些数据集训练线性回归器。为了比较复杂性和泛化性之间的关系,我对一组 4 度 (1, 3, 6, 9) 使用 h 多项式特征预处理。拟合模型后,我想在数组上进行测试 x = np.linspace(1, 10, 100)

经过多次尝试,我发现 x 和 y 数组需要重新整形,我就这样做了。但是,当我创建要预测的新 x 数据集时,它提示尺寸未对齐。估计器正在对原始 x 数组进行测试分割。

下面是我的代码

import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split

np.random.seed(0)
n = 100
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)

def fn_one():
from sklearn.linear_model import LinearRegression
from sklearn.preprocessing import PolynomialFeatures

x_predict = np.linspace(0,10,100)
x_predict = x_predict.reshape(-1, 1)
degrees = [1, 3, 6, 9]
predictions = []

for i, deg in enumerate(degrees):
linReg = LinearRegression()
pf = PolynomialFeatures(degree=deg)
xt = x.reshape(-1, 1)
yt = y.reshape(-1, 1)

X_transformed = pf.fit_transform(xt)
X_train_transformed, X_test_transformed, y_train_temp, y_test_temp = train_test_split(X_transformed, yt, random_state=0)
linReg.fit(X_train_transformed, y_train_temp)
predictions.append(linReg.predict(x_predict))

np.array(predictions)
return predictions

不同数组的形状(循环中的度为 3)

x_predict = (100, 1)

xt = 100, 1

yt = 100, 1

X_train_transformed = 75, 4

y_train_temp = 75, 1

X_test_transformed = 25, 4

y_train_temp = 25, 1

X_test_transformed = 4, 25, 1 的预测

x_predict = 的预测不起作用:

Error = ValueError: shapes (100,1) and (2,1) not aligned: 1 (dim 1) != 2 (dim 0)

最佳答案

您忘记转换您的x_predict。我已更新您的代码如下:

import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split

np.random.seed(0)
n = 100
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)

def fn_one():
from sklearn.linear_model import LinearRegression
from sklearn.preprocessing import PolynomialFeatures

x_predict = np.linspace(0,10,100)
x_predict = x_predict.reshape(-1, 1)
degrees = [1, 3, 6, 9]
predictions = []

for i, deg in enumerate(degrees):
linReg = LinearRegression()
pf = PolynomialFeatures(degree=deg)
xt = x.reshape(-1, 1)
yt = y.reshape(-1, 1)

X_transformed = pf.fit_transform(xt)
X_train_transformed, X_test_transformed, y_train_temp, y_test_temp = train_test_split(X_transformed, yt, random_state=0)
linReg.fit(X_train_transformed, y_train_temp)
x_predict_transformed = pf.fit_transform(x_predict)
predictions.append(linReg.predict(x_predict_transformed))

np.array(predictions)
return predictions

现在,当您调用 fn_one() 时,您将获得预测。

关于python - 线性回归器无法预测一组值;错误 : ValueError: shapes (100, 1) 和 (2,1) 未对齐 : 1 (dim 1) ! = 2(暗淡 0),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57027561/

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