Suz*_*uzy 3 python machine-learning matplotlib scikit-learn seaborn
我正在使用plot_confusion_matrix
from sklearn.metrics
. 我想像子图一样表示那些彼此相邻的混淆矩阵,我怎么能做到这一点?
yat*_*atu 16
让我们使用 good'ol iris 数据集来重现这一点,并拟合几个分类器来绘制它们各自的混淆矩阵plot_confusion_matrix
:
from sklearn.ensemble import AdaBoostClassifier, GradientBoostingClassifier
from sklearn.svm import SVC
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from matplotlib import pyplot as plt
from sklearn.datasets import load_iris
from sklearn.metrics import plot_confusion_matrix
data = load_iris()
X = data.data
y = data.target
Run Code Online (Sandbox Code Playgroud)
设置 -
X_train, X_test, y_train, y_test = train_test_split(X, y)
classifiers = [LogisticRegression(solver='lbfgs'),
AdaBoostClassifier(),
GradientBoostingClassifier(),
SVC()]
for cls in classifiers:
cls.fit(X_train, y_train)
Run Code Online (Sandbox Code Playgroud)
因此,您可以简单地比较所有矩阵的方法是创建一组带有plt.subplots
. 然后迭代轴对象和训练的分类器(plot_confusion_matrix
期望作为输入)并绘制各个混淆矩阵:
fig, axes = plt.subplots(nrows=2, ncols=2, figsize=(15,10))
for cls, ax in zip(classifiers, axes.flatten()):
plot_confusion_matrix(cls,
X_test,
y_test,
ax=ax,
cmap='Blues',
display_labels=data.target_names)
ax.title.set_text(type(cls).__name__)
plt.tight_layout()
plt.show()
Run Code Online (Sandbox Code Playgroud)