为啥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]) 有问题的数组包含字符串('add/+ 表示数字。 @hpaulj 是的,你是对的。还需要将它们转换为字符串。整个代码是: for i in range(0, len(y_test_pred)): print(str(y_test_pred[i][0]) + " - " + str(y_test.values[i][0]))跨度> 【参考方案1】:

如果您想比较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变量对象时会返回错误?

OCMock:为啥在尝试调用 UIWebView 模拟时会出现无法识别的选择器异常?

当自动关闭资源时尝试使用资源引发异常以及异常时会发生啥

为啥 AVR-GCC 编译器在使用相同的变量但作为 PROGMEM 重载时会引发错误?