sklearn linearregression() 没有 return 矩阵

sklearn linearregression() doesn't return matrix

我有一个矩阵 x_train,它由 10 个输入数据集组成。 y_train 是唯一的训练输出。每个输入或输出有 422 个元素。

为了测试,我有一个类似的设置,每个输入或输出只有 20 个元素。

x_train.shape = (422, 10)
y_train.shape = (422,)
x_test.shape = (20, 10)
y_test.shape = (20,)

这里我用矩阵训练模型r。

r = linear_model.LinearRegression()
r.fit(x_train, y_train)

现在,当我给它一个矩阵作为测试输入时,我收到一个向量作为预测输出

y_predict = r.predict(x_test)

y_predict.shape = (20,),但我希望它再次return一个矩阵。

据我了解所有这些,我应该能够输入一组数据(矩阵的一行)并接收预测(与矩阵的该行具有相同的维度)。

有趣的是,当我使用单个向量来训练我的回归模型时,它会产生一个与输入向量大小相同的预测向量。但是,如果我用矩阵训练它,如果输入是向量,它会产生一个标量。

这是该示例的代码,我在其中获得矢量输入的矢量输出,因为回归模型是由矢量教授的。

from sklearn import datasets, linear_model
# Load the diabetes dataset
diabetes = datasets.load_diabetes()
# Use only one feature
diabetes_X = diabetes.data[:, np.newaxis, 2] # change 2 to something else for other features
# Split the data into training/testing sets
diabetes_X_train = diabetes_X[:-20]
diabetes_X_test = diabetes_X[-20:]
# Split the targets into training/testing sets
diabetes_y_train = diabetes.target[:-20]
diabetes_y_test = diabetes.target[-20:]
# Create linear regression object
regr = linear_model.LinearRegression()
# Train the model using the training sets
regr.fit(diabetes_X_train, diabetes_y_train)
y_predict=regr.predict(diabetes_X_train)
print("y_predict.shape =", y_predict.shape)

形状是 y_predict.shape = (422,)

如何为矩阵的每个输入行获得一个输出?

线性回归用于对可能有多个维度(输入 x)与一个标量变量(输出 y)的关系进行建模。

一次观察的每个预测都会产生一个标量。如果您要预测多行,它将是一个标量向量(就像在每一行上调用预测并连接结果)。

您不确定为什么返回向量的代码适合许多观察值,每个观察值具有 1 个维度。

像这样向您的代码添加打印:

regr.fit(diabetes_X_train, diabetes_y_train)
print(diabetes_X_train.shape)
# (422, 1)

由于您有 422 个观测值,预测将输出一个包含 422 个标量输出的向量。