我正在运行朴素贝叶斯模型,可以打印我的测试准确性,但不能打印训练准确性
#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/