尝试对数据执行 GaussianNB 时出现 TypeError - python 初学者
When trying to perform GaussianNB on data get TypeError - python beginner
我正在尝试使用 GaussianNB 构建预测模型。
我有一个如下所示的 csv 文件:
csv data
我的代码如下所示:
encoded_df = pd.read_csv('path to file')
y = encoded_df.iloc[:,12]
X = encoded_df.iloc[:,0:12]
model = GaussianNB()
model.fit(X, y)
prediction_test_naive = ['427750', '426259', '2', '1610', '2', '1', '2', '1', '4', '1', '47', '2']
naive_predicted_class = model.predict(np.reshape(prediction_test_naive, [1, -1]))
print("predicted Casualty Severity: 1 = slight, 2 = serious, 3 = fatal: ", naive_predicted_class)
expected_bayes = y
predicted_bayes = model.predict(X)
classification_report_bayes = metrics.classification_report(expected_bayes, predicted_bayes)
print(classification_report_bayes)
当 运行 我收到类型错误:
TypeError: ufunc 'subtract' 不包含签名匹配类型的循环 dtype('U32') dtype('U32') dtype('U32')
错误似乎来自上面示例代码中的第 7 行。但除此之外我不知道。
我不太确定如何解决这个问题,我有一个可行的决策树,但也想使用贝叶斯定理。
错误是由于这一行:
prediction_test_naive = ['427750', '426259', '2', '1610', '2', '1', '2', '1', '4', '1', '47', '2']
在这里您要声明一个字符串列表(通过在值周围使用一个引号),然后将其用于预测。但是在模型中,只允许使用数值。所以你需要把它们转换成数值。
为此您可以使用以下方式:
1) 将 prediction_test_naive
声明为这样的数字(注意引号已被删除):
prediction_test_naive = [427750, 426259, 2, 1610, 2, 1, 2, 1, 4, 1, 47, 2]
2) 使用 numpy
将 prediction_test_naive 转换为数值
这一行之后:
prediction_test_naive = ['427750', '426259', '2', '1610', '2', '1', '2', '1', '4', '1', '47', '2']
这样做:
prediction_test_naive = np.array(prediction_test_naive, dtype=float)
我正在尝试使用 GaussianNB 构建预测模型。
我有一个如下所示的 csv 文件: csv data
我的代码如下所示:
encoded_df = pd.read_csv('path to file')
y = encoded_df.iloc[:,12]
X = encoded_df.iloc[:,0:12]
model = GaussianNB()
model.fit(X, y)
prediction_test_naive = ['427750', '426259', '2', '1610', '2', '1', '2', '1', '4', '1', '47', '2']
naive_predicted_class = model.predict(np.reshape(prediction_test_naive, [1, -1]))
print("predicted Casualty Severity: 1 = slight, 2 = serious, 3 = fatal: ", naive_predicted_class)
expected_bayes = y
predicted_bayes = model.predict(X)
classification_report_bayes = metrics.classification_report(expected_bayes, predicted_bayes)
print(classification_report_bayes)
当 运行 我收到类型错误:
TypeError: ufunc 'subtract' 不包含签名匹配类型的循环 dtype('U32') dtype('U32') dtype('U32')
错误似乎来自上面示例代码中的第 7 行。但除此之外我不知道。
我不太确定如何解决这个问题,我有一个可行的决策树,但也想使用贝叶斯定理。
错误是由于这一行:
prediction_test_naive = ['427750', '426259', '2', '1610', '2', '1', '2', '1', '4', '1', '47', '2']
在这里您要声明一个字符串列表(通过在值周围使用一个引号),然后将其用于预测。但是在模型中,只允许使用数值。所以你需要把它们转换成数值。
为此您可以使用以下方式:
1) 将 prediction_test_naive
声明为这样的数字(注意引号已被删除):
prediction_test_naive = [427750, 426259, 2, 1610, 2, 1, 2, 1, 4, 1, 47, 2]
2) 使用 numpy
将 prediction_test_naive 转换为数值这一行之后:
prediction_test_naive = ['427750', '426259', '2', '1610', '2', '1', '2', '1', '4', '1', '47', '2']
这样做:
prediction_test_naive = np.array(prediction_test_naive, dtype=float)