根据分类结果绘制混淆矩阵,多种不同
#逻辑回归
clf = LogisticRegression(random_state=0, solver='lbfgs', multi_class='multinomial')
clf.fit(X_train, y_train)
y_pred_log = clf.predict(X_test)
accuracy = accuracy_score(y_test, y_pred_log)
precision = precision_score(y_test, y_pred_log, average='macro')
recall = recall_score(y_test, y_pred_log, average='macro')
f1 = 2 * precision * recall / (precision + recall)
print("逻辑回归分类结果:\n准确率:", accuracy,"\n精确率:", precision, "\n召回率:", recall, "\nF1:", f1)
#朴素贝叶斯
clf = MultinomialNB()
clf.fit(X_train, y_train)
y_pred_clf = clf.predict(X_test)
accuracy = accuracy_score(y_test, y_pred_clf)
precision = precision_score(y_test, y_pred_clf, average='macro')
recall = recall_score(y_test, y_pred_clf, average='macro')
f1 = 2 * precision * recall / (precision + recall)
print("朴素贝叶斯分类结果:\n准确率:", accuracy, "\n精确率:",precision, "\n召回率:", recall, "\nF1:", f1)
# 评估分类效果
print(classification_report(y_test, y_pred_log))
该答案引用ChatGPT的部分内容:要绘制混淆矩阵,可以使用sklearn库中的confusion_matrix()函数。下面是一个示例代码,用于绘制逻辑回归分类器的混淆矩阵:
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn.metrics import confusion_matrix
# 绘制混淆矩阵
cm = confusion_matrix(y_test, y_pred_log)
plt.figure(figsize=(10, 8))
sns.heatmap(cm, annot=True, cmap="Blues")
plt.title("Confusion Matrix - Logistic Regression")
plt.xlabel("Predicted labels")
plt.ylabel("True labels")
plt.show()
同样的,可以使用上述代码,将“朴素贝叶斯”改为“逻辑回归”,来绘制朴素贝叶斯分类器的混淆矩阵。请注意,混淆矩阵中的行表示真实标签,列表示预测标签。
另外,为了更好地理解混淆矩阵,可以在绘制矩阵的同时输出分类器的其他评估指标,如准确率、精确率、召回率和F1值等。
以下答案由GPT-3.5大模型与博主波罗歌共同编写:
混淆矩阵可用于评估分类器的性能和质量,特别是针对多类别的分类问题。基本上,混淆矩阵是一个方阵,其中每行和每列分别表示真实和预测的类别,并且对角线上的元素表示正确分类的数量,而其他元素表示错误分类的数量。比如,二元分类的混淆矩阵为:
True Positive(TP) | False Negative(FN) |
---|---|
False Positive(FP) | True Negative(TN) |
其中,True Positive表示真阳性,即正确地将正类标记为正类;False Positive表示假阳性,即将负类错误地标记为正类;True Negative表示真阴性,即正确地将负类标记为负类;False Negative表示假阴性,即将正类错误地标记为负类。
可以使用scikit-learn库的confusion_matrix()
函数,根据真实标签和预测标签生成混淆矩阵。除此之外,还可以使用classification_report()
函数生成包含多种分类评估指标的报告,如准确率(Precision)、召回率(Recall)、F1值等。
下面是绘制混淆矩阵的代码示例:
from sklearn.metrics import confusion_matrix
import matplotlib.pyplot as plt
import seaborn as sns
# 逻辑回归
clf = LogisticRegression(random_state=0, solver='lbfgs', multi_class='multinomial')
clf.fit(X_train, y_train)
y_pred_log = clf.predict(X_test)
# 绘制混淆矩阵
cm = confusion_matrix(y_test, y_pred_log)
sns.heatmap(cm, annot=True, cmap='Blues')
plt.title('Confusion Matrix - Logistic Regression')
plt.xlabel('Predicted Labels')
plt.ylabel('True Labels')
plt.show()
# 朴素贝叶斯
clf = MultinomialNB()
clf.fit(X_train, y_train)
y_pred_nb = clf.predict(X_test)
# 绘制混淆矩阵
cm = confusion_matrix(y_test, y_pred_nb)
sns.heatmap(cm, annot=True, cmap='Blues')
plt.title('Confusion Matrix - Naive Bayes')
plt.xlabel('Predicted Labels')
plt.ylabel('True Labels')
plt.show()
这段代码使用了seaborn库的heatmap()
函数绘制混淆矩阵,并且设定了标签、标题、颜色等属性。运行后可以得到类似以下图像:

# 绘制热力图
sns.heatmap(cm, annot=True, cmap='Blues', fmt='g')
plt.xlabel('Predicted labels')
plt.ylabel('True labels')
plt.show()
这将绘制一个带有标签的混淆矩阵的热力图。
除了混淆矩阵之外,scikit-learn库还提供了classification_report函数,它可以用于打印分类器的性能指标,例如准确率,精确率,召回率和F1得分。例如:
from sklearn.metrics import classification_report
print(classification_report(y_test, y_pred_log))
这将打印出逻辑回归分类器的性能指标。您可以用相同的方式打印出其他分类器的性能指标,例如朴素贝叶斯分类器。
该回答引用ChatGPTpython
from sklearn.metrics import confusion_matrix
import seaborn as sns
import matplotlib.pyplot as plt
clf = LogisticRegression(random_state=0, solver='lbfgs', multi_class='multinomial')
clf.fit(X_train, y_train)
y_pred_log = clf.predict(X_test)
cm = confusion_matrix(y_test, y_pred_log)
sns.heatmap(cm, annot=True, cmap='Blues')
plt.show()
python
from sklearn.metrics import classification_report
print(classification_report(y_test, y_pred_log))