为啥numpy在尝试预测回归时会引发异常错误:“ufunc'add'没有包含具有签名匹配类型的循环”?
Posted
技术标签:
【中文标题】为啥numpy在尝试预测回归时会引发异常错误:“ufunc\'add\'没有包含具有签名匹配类型的循环”?【英文标题】:Why does numpy raise exception error: "ufunc 'add' did not contain a loop with signature matching types" when trying to predict a regressand?为什么numpy在尝试预测回归时会引发异常错误:“ufunc'add'没有包含具有签名匹配类型的循环”? 【发布时间】:2021-03-31 13:01:17 【问题描述】:我目前正在尝试使用测试和训练数据创建一个多元线性回归,以估计房价(通过使用称为“Quadratmeter”和“Gewinn”的两个回归量)。
我想在模型中插入一些测试数据,并将预测的 y 值与实际值进行比较。因此,我使用了一个 for 循环来并排显示它们。
这是使用的全部代码:
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
df = pd.read_csv("...")
head = df.head()
pd.set_option('display.expand_frame_repr', False)
print(head)
X = df[["Gewinn", "Quadratmeter"]]
y = df[["Preis in Mio"]]
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=0, test_size=0.25)
model = LinearRegression()
model.fit(X_train, y_train)
print(model.intercept_)
print(model.coef_)
# complete model: Preis = 6.48370247 + Gewinn * 6.39855984e-06 + Quadratmeter * 3.89642288e-03 + e
y_test_pred = model.predict(X_test)
for i in range(0, len(y_test_pred)):
print(y_test_pred[i][0] + "-" + y_test[i][0])
很遗憾,在尝试运行程序时出现以下错误代码(这是由于 for 循环):
numpy.core._exceptions.UFuncTypeError: ufunc 'add' did not contain a loop with signature `enter code here`matching types (dtype('<U32'), dtype('<U32')) -> dtype('<U32')
很遗憾,我不知道如何解决这个问题。 谁能给个提示?
感谢任何帮助。
【问题讨论】:
找到解决方案。 y_test 是数据框类型,而不是数组。更正:for i in range(0, len(y_test_pred)): print(y_test_pred[i][0], y_test.values[i][0]) 有问题的数组包含字符串('如果您想比较y_test_pred
和y_test
,我建议创建一个包含这两个值的数据框。这使得比较更容易,而且您可以保存值并进行计算。
results_df = pd.DataFrame('predictions': y_test_pred, 'actual_values':y_test)
【讨论】:
以上是关于为啥numpy在尝试预测回归时会引发异常错误:“ufunc'add'没有包含具有签名匹配类型的循环”?的主要内容,如果未能解决你的问题,请参考以下文章
构建多回归模型会引发错误:`Pandas 数据转换为对象的 numpy dtype。使用 np.asarray(data) 检查输入数据。`
为啥针对精度优化模型会引发错误:由于没有预测样本,精度定义不明确并设置为 0.0?
为啥numpy点积函数在传递两个TensorFlow变量对象时会返回错误?