繁体   English   中英

ValueError: matmul: 输入操作数 1 在其核心维度 0 中存在不匹配,具有 gufunc 签名 (n?,k),(k,m?)->(n?,m?)(大小 13 与 1 不同)

[英]ValueError: matmul: Input operand 1 has a mismatch in its core dimension 0, with gufunc signature (n?,k),(k,m?)->(n?,m?) (size 13 is different from 1)

我正在使用 sklearn 通过线性回归解决波士顿房价问题。 途中出现了这样的错误:

ValueError: matmul: 输入操作数 1 在其核心维度 0 中存在不匹配,具有 gufunc 签名 (n?,k),(k,m?)->(n?,m?)(大小 13 与 1 不同)

代码:

import numpy as np
import pandas as pd
from sklearn.datasets import load_boston
from sklearn.linear_model import LinearRegression

X = boston.data
y = boston.data

dfX = pd.DataFrame(X, columns = boston.feature_names)
dfy = pd.DataFrame(y, columns = ["Price"] )
df = pd.concat([dfX,dfy],axis =1)

reg = LinearRegression()
reg.fit(X,y)

x_12 = np.array(dfX["LSTAT"]).reshape(-1,1)  # 12th data in boston.data
y = np.array(dfy["Price"]).reshape(-1,1)

predict = reg.predict(x_12) > Error code

错误似乎是由于LinearRegression的函数fit用于load_boston数据集的所有 13 个特征,但在使用predict ,您只使用 1 个特征( LSTAT )。 这似乎会导致训练模型和predict输入数据之间发生冲突。 您可能需要更新您的fit函数,以便它只接受LSTAT特征,这样在使用predict时它只会期望一个特征作为输入数据

import numpy as np
import pandas as pd
from sklearn.datasets import load_boston
from sklearn.linear_model import LinearRegression

boston = load_boston()
X, y = load_boston(return_X_y=True)

# X will now have only data from "LSTAT" column
X = X[:, np.newaxis, boston.feature_names.tolist().index("LSTAT")]

dfX = pd.DataFrame(X, columns = ["LSTAT"] )
dfy = pd.DataFrame(y, columns = ["Price"] )
df = pd.concat([dfX,dfy],axis =1)

reg = LinearRegression()
reg.fit(X, y)

x_12 = np.array(dfX["LSTAT"]).reshape(-1, 1)  # 12th data in boston.data
y = np.array(dfy["Price"]).reshape(-1, 1)

predict = reg.predict(x_12)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM