StratifiedKFold的混淆矩阵和分类报告

Posted

技术标签:

【中文标题】StratifiedKFold的混淆矩阵和分类报告【英文标题】:confusion matrix and classification report of StratifiedKFold 【发布时间】:2019-07-26 22:34:28 【问题描述】:

我正在使用 StratifiedKFold 来检查我的分类器的性能。我有两个班级,我试图建立 Logistic Regression classier。 这是我的代码

skf = StratifiedKFold(n_splits=10, shuffle=True, random_state=0)
for train_index, test_index in skf.split(x, y):
    x_train, x_test = x[train_index], x[test_index]
    y_train, y_test = y[train_index], y[test_index]

    tfidf = TfidfVectorizer()
    x_train = tfidf.fit_transform(x_train)
    x_test = tfidf.transform(x_test)

    clf =  LogisticRegression(class_weight='balanced')
    clf.fit(x_train, y_train)
    y_pred = clf.predict(x_test)
    score = accuracy_score(y_test, y_pred)
    r.append(score)
    print(score)

print(np.mean(r))

我可以只打印性能分数,但我不知道如何打印混淆矩阵和分类报告。如果我只是在循环内添加打印语句,

print(confusion_matrix(y_test, y_pred))

它会打印 10 次,但我想报告分类器最终性能的矩阵。

关于如何计算矩阵和报告的任何帮助。谢谢

【问题讨论】:

欢迎来到 SO;请发布您迄今为止尝试过的内容以及您面临的具体问题 - 事实上,即使是非常基本的内容(例如,有多少个课程?),您也没有提供任何有用的信息(例如,有多少个课程?) 对不起,我会编辑帖子 【参考方案1】:

交叉验证用于评估特定模型或超参数在数据集的不同拆分中的性能。最后,您本身并没有最终表现,您拥有每个分段的个人表现和跨分段的汇总表现。您可以潜在地使用 tn、fn、fp、tp 来创建聚合的精度、召回率、灵敏度等......但是您也可以只使用 sklearn 中这些指标的预定义函数并在最后聚合它们。

例如

skf = StratifiedKFold(n_splits=10, shuffle=True, random_state=0)
accs, precs, recs = [], [], []
for train_index, test_index in skf.split(x, y):
    x_train, x_test = x[train_index], x[test_index]
    y_train, y_test = y[train_index], y[test_index]

    tfidf = TfidfVectorizer()
    x_train = tfidf.fit_transform(x_train)
    x_test = tfidf.transform(x_test)

    clf =  LogisticRegression(class_weight='balanced')
    clf.fit(x_train, y_train)
    y_pred = clf.predict(x_test)
    acc = accuracy_score(y_test, y_pred)
    prec = precision_score(y_test, y_pred)
    rec = recall_score(y_test, y_pred)
    accs.append(acc)
    precs.append(prec)
    recs.append(rec)
    print(f'Accuracy: acc, Precision: prec, Recall: rec')

print(f'Mean Accuracy: np.mean(accs), Mean Precision: np.mean(precs), Mean Recall: np.mean(recs)')

【讨论】:

以上是关于StratifiedKFold的混淆矩阵和分类报告的主要内容,如果未能解决你的问题,请参考以下文章

在 KFold 交叉验证的情况下如何显示平均分类报告和混淆矩阵

计算多标签分类问题的ROC曲线、分类报告和混淆矩阵

python 混淆矩阵和分类报告

python 分类报告,混淆矩阵

为图像分类模型绘制混淆矩阵

Weka中决策树和混淆矩阵中正确/错误分类实例之间的差异