Python sklearn linearregression()不';t回归矩阵

Python sklearn linearregression()不';t回归矩阵,python,scikit-learn,linear-regression,Python,Scikit Learn,Linear Regression,我有一个矩阵x_列,它由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)

我有一个矩阵
x_列
,它由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\u predict.shape=(20,)
,但我希望它再次返回一个矩阵

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

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

下面是这个例子的代码,我得到了一个向量输入的向量输出,因为回归模型是由向量设定的

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\u.Shape=(422,)


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

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

对一次观测的每一次预测都将产生一个标量。如果要预测多行,那么它将是标量向量(就像对每行调用predict并连接结果)

您不确定返回向量的原因的代码正在拟合多个观测值,每个观测值都有一个维度

向代码中添加打印,如下所示:

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

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

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

对一次观测的每一次预测都将产生一个标量。如果要预测多行,那么它将是标量向量(就像对每行调用predict并连接结果)

您不确定返回向量的原因的代码正在拟合多个观测值,每个观测值都有一个维度

向代码中添加打印,如下所示:

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

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

那么您对整个矩阵->矩阵映射有什么想法?你在这里做线性回归。问题是将输入向量映射到某个标量,就像这样。Wiki:
在统计学中,线性回归是一种建模标量因变量y和一个或多个表示为X的解释变量(或自变量)之间关系的方法
结果:输入向量->标量;输入矩阵->向量(标量)正确。但当我用向量训练我的模型时,我得到了向量输入的向量输出。你能解释一下吗?因为你(有效地)拟合了多行,每行1维。检查形状和sklearn的输入假设<代码>np.数组([1,2,3])!=np.array([[1],[2],[3]])我添加了向量->向量大小写的代码。你有解决这个问题的办法吗?那么你对整个矩阵->矩阵映射有什么想法?你在这里做线性回归。问题是将输入向量映射到某个标量,就像这样。Wiki:
在统计学中,线性回归是一种建模标量因变量y和一个或多个表示为X的解释变量(或自变量)之间关系的方法
结果:输入向量->标量;输入矩阵->向量(标量)正确。但当我用向量训练我的模型时,我得到了向量输入的向量输出。你能解释一下吗?因为你(有效地)拟合了多行,每行1维。检查形状和sklearn的输入假设<代码>np.数组([1,2,3])!=np.array([[1],[2],[3]])我添加了向量->向量大小写的代码。你有办法解决这个问题吗?