JCh*_*hat 2 python matplotlib confusion-matrix scikit-learn seaborn
我有 2 个numpy数组,y_actual(实际值)和y_pred(ML 模型预测),都具有二进制值,0 或 1。
目前,我正在confusion matrix根据以下语法形成一个:-
df_confusion = pd.crosstab(y_actual, y_pred, rownames=['Actual'], colnames=['Predicted'], margins=True)
print('Confusion Matrix:')
print(df_confusion)
Run Code Online (Sandbox Code Playgroud)
但是,我查看了 SO 和其他文档,但找不到具有最少代码的综合示例,这可以帮助我完成以下操作:-
matplotlib或Seaborn,其中显示每个类的实际样本数,旁边有 0 asClass A和 1 as 的名称标签Class B。此外,正如问题中所述,目的是完成将 Class 0 标记为Class AClass 1 as Class B,因为目前这些仅显示为0和1,看起来不太连贯。我更喜欢用最少的代码来完成相同的工作,并生成连贯且美观的混淆矩阵图。高度赞赏这方面的任何帮助。
我将向您介绍拥有大量资源的Kaggle。您应该能够轻松调整下面的示例以满足您的需求。
from sklearn.svm import SVC
from sklearn.metrics import accuracy_score, confusion_matrix, precision_recall_fscore_support
clf = SVC(kernel = 'linear').fit(x_train,y_train)
clf.predict(x_train)
y_pred = clf.predict(x_test)
# Creates a confusion matrix
cm = confusion_matrix(y_test, y_pred)
# Transform to df for easier plotting
cm_df = pd.DataFrame(cm,
index = ['setosa','versicolor','virginica'],
columns = ['setosa','versicolor','virginica'])
plt.figure(figsize=(5.5,4))
sns.heatmap(cm_df, annot=True)
plt.title('SVM Linear Kernel \nAccuracy:{0:.3f}'.format(accuracy_score(y_test, y_pred)))
plt.ylabel('True label')
plt.xlabel('Predicted label')
plt.show()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6964 次 |
| 最近记录: |