python - Python 中朴素贝叶斯的训练准确性

标签 python classification naivebayes

我正在运行朴素贝叶斯模型,可以打印我的测试准确性,但不能打印训练准确性

#import libraries
from sklearn.preprocessing import StandardScaler
from sklearn.naive_bayes import GaussianNB
from sklearn.svm import SVC
from sklearn import metrics
from sklearn.decomposition import PCA

#Naive Bayes model
gNB = GaussianNB()
gNB.fit(X_train, y_train)

nb_predict = gNB.predict(X_test)

print(metrics.classification_report(y_test, nb_predict))
accuracy = metrics.accuracy_score(y_test, nb_predict)
average_accuracy = np.mean(y_test == nb_predict) * 100
print("The average_accuracy is {0:.1f}%".format(average_accuracy))

#PRINTS The average_accuracy is 39.0%

#try to print training accuracy
print(metrics.classification_report(y_train, X_train))
accuracy = metrics.accuracy_score(y_train, X_train)
average_accuracy = np.mean(y_train == X_train) * 100
print("The average_accuracy is {0:.1f}%".format(average_accuracy))

当我尝试使用与测试准确性相同的代码来计算训练准确性时,我收到了训练准确性错误。

y_type 上不能有多个值 => 不再需要该集合

ValueError: Classification metrics can't handle a mix of multiclass and multiclass-multioutput targets

什么代码有效?

最佳答案

sklearn.metrics.accuracy_score 期望 y_true 和 y_pred 为一维数组。所以,在下面的代码中

accuracy = metrics.accuracy_score(y_train, X_train)

y_train 和 X_train 应该是一维的。但我认为 X_train 不是一维数组。这就是错误发生的原因。 阅读此文档:https://scikit-learn.org/stable/modules/generated/sklearn.metrics.accuracy_score.html

为了在拟合模型后衡量模型对训练数据的准确性,您需要从训练数据中获取预测 然后求准确率:

y_predict_for_trainData = gNB.predict(X_train)
accuracy_For_TrainData = metrics.accuracy_score(y_train, y_predict_for_trainData)

关于python - Python 中朴素贝叶斯的训练准确性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57899609/

相关文章:

python - 如何使我的 Python 脚本更快?

python - 将包含数组值的 Python 字典转储到 CSV

python - 带类的字典?

python - 如何在带有朴素贝叶斯分类器和 NLTK 的 scikit 中使用 k 折交叉验证

python - 返回 sklearn 高斯朴素贝叶斯的原始概率

python - 按组中每个出现的值构建计数列

image-processing - 将多个 Haar 分类器与 OpenCV 相结合

python - 计算图像片段(超像素)的特征向量

machine-learning - IBM Watson Natural Language Classifier 是否支持多个类和多个类集?

r - 如何找到哪些列影响 R 中的预测