【问题标题】:Training accuracy on Naive Bayes in PythonPython中朴素贝叶斯的训练准确性
【发布时间】:2020-01-13 21:53:34
【问题描述】:

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

#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

什么代码有效?

【问题讨论】:

    标签: python classification naivebayes


    【解决方案1】:

    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)
    

    【讨论】:

    • 感谢您的文档。如果 y_train 和 X_train 不是 1d,是否还有其他方法可以获得训练精度?
    • 你想测量你的模型对训练数据的准确性吗?
    • 是的,我需要测量模型对训练数据的准确性。您添加的代码运行良好!
    猜你喜欢
    • 2014-02-21
    • 2015-06-25
    • 2013-04-11
    • 2020-06-28
    • 1970-01-01
    • 2012-07-31
    • 2016-08-12
    • 2020-09-13
    • 2015-10-28
    相关资源
    最近更新 更多