Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 并排绘制多个混淆矩阵_Python_Matplotlib_Plot_Scikit Learn_Seaborn - Fatal编程技术网

Python 并排绘制多个混淆矩阵

Python 并排绘制多个混淆矩阵,python,matplotlib,plot,scikit-learn,seaborn,Python,Matplotlib,Plot,Scikit Learn,Seaborn,我是新来的。这是我希望从专家那里得到答案的第一个问题。我有5个分类器模型,我正试图绘制它们的混淆矩阵 from sklearn.linear_model import LogisticRegression from sklearn.svm import SVC from sklearn.neighbors import KNeighborsClassifier from sklearn.tree import DecisionTreeClassifier from sklearn.ensembl

我是新来的。这是我希望从专家那里得到答案的第一个问题。我有5个分类器模型,我正试图绘制它们的混淆矩阵

from sklearn.linear_model import LogisticRegression
from sklearn.svm import SVC
from sklearn.neighbors import KNeighborsClassifier
from sklearn.tree import DecisionTreeClassifier
from sklearn.ensemble import RandomForestClassifier
import collections

classifiers = {
    "Naive Bayes": GaussianNB(),
    "LogisiticRegression": LogisticRegression(),
    "KNearest": KNeighborsClassifier(),
    "Support Vector Classifier": SVC(),
    "DecisionTreeClassifier": DecisionTreeClassifier(),
}
然后

from sklearn.metrics import confusion_matrix
for key, classifier in classifiers.items(): 
    y_pred = classifier.fit(X_train, y_train).predict(X_test)
    cf_matrix=confusion_matrix(y_test, y_pred)
    print(cf_matrix)
这让我

现在,我试图用下面的代码绘制它们,但图上没有显示任何数据

fig, axn = plt.subplots(1,5, sharex=True, sharey=True)
cbar_ax = fig.add_axes([.91, .3, .03, .4])

for i, ax in enumerate(axn.flat):
    sns.heatmap(cf_matrix, ax=ax,
                cbar=i == 0,
                vmin=0, vmax=1,
                cbar_ax=None if i else cbar_ax)

fig.tight_layout(rect=[0, 0, .9, 1])


有人能帮我完成吗?

您需要将混淆矩阵存储在某个地方,因此如果我使用示例数据集:

import pandas as pd
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
import matplotlib.pyplot as plt
import seaborn as sns

data = load_breast_cancer()
scaler = StandardScaler()

X_df = pd.DataFrame(data.data, columns=data.feature_names)
X_df = scaler.fit_transform(X_df)
y_df = pd.DataFrame(data.target, columns=['target'])

X_train, X_test, y_train, y_test = train_test_split(X_df, y_df, test_size=0.2, random_state=11)
并将其存储在类似的词典中:

from sklearn.metrics import confusion_matrix
cf_matrix = dict.fromkeys(classifiers.keys())
for key, classifier in classifiers.items(): 
    y_pred = classifier.fit(X_train, y_train.values.ravel()).predict(X_test)
    cf_matrix[key]=confusion_matrix(y_test, y_pred)
然后您可以绘制它:

fig, axn = plt.subplots(1,5, sharex=True, sharey=True,figsize=(12,2))

for i, ax in enumerate(axn.flat):
    k = list(cf_matrix)[i]
    sns.heatmap(cf_matrix[k], ax=ax,cbar=i==4)
    ax.set_title(k,fontsize=8)

您需要将混淆矩阵存储在某个地方,因此如果我使用示例数据集:

import pandas as pd
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
import matplotlib.pyplot as plt
import seaborn as sns

data = load_breast_cancer()
scaler = StandardScaler()

X_df = pd.DataFrame(data.data, columns=data.feature_names)
X_df = scaler.fit_transform(X_df)
y_df = pd.DataFrame(data.target, columns=['target'])

X_train, X_test, y_train, y_test = train_test_split(X_df, y_df, test_size=0.2, random_state=11)
并将其存储在类似的词典中:

from sklearn.metrics import confusion_matrix
cf_matrix = dict.fromkeys(classifiers.keys())
for key, classifier in classifiers.items(): 
    y_pred = classifier.fit(X_train, y_train.values.ravel()).predict(X_test)
    cf_matrix[key]=confusion_matrix(y_test, y_pred)
然后您可以绘制它:

fig, axn = plt.subplots(1,5, sharex=True, sharey=True,figsize=(12,2))

for i, ax in enumerate(axn.flat):
    k = list(cf_matrix)[i]
    sns.heatmap(cf_matrix[k], ax=ax,cbar=i==4)
    ax.set_title(k,fontsize=8)

sklearn
混乱矩阵上提供打印功能。
有两种方法

我在这里使用了第二种方法,因为在第一种方法中删除colorbar非常冗长(有多个colorbar看起来非常混乱)


sklearn
混乱矩阵上提供打印功能。
有两种方法

我在这里使用了第二种方法,因为在第一种方法中删除colorbar非常冗长(有多个colorbar看起来非常混乱)


非常感谢您。我按照你的建议做了更改,我得到了belowhi@hadi0815,欢迎来到stackoverflow。您已经发布了一个问题,我相信我已经用良好的可复制代码回答了它。如果您还有其他问题,请将其作为单独的问题发布。非常感谢。我按照你的建议做了更改,我得到了belowhi@hadi0815,欢迎来到stackoverflow。您已经发布了一个问题,我相信我已经用良好的可复制代码回答了它。如果您有其他问题不在此问题范围内,请将其作为单独的问题发布。酷,不知道此功能。。lol从来不用想象它是最近添加的。哈哈,你只需要在做PresentationTool时使用,不知道这个函数。。lol从来不用想象它是最近添加的。哈哈,你只是在做演讲的时候才需要