【问题标题】:How can I get a confusion matrix of a single run in sklearn cross_validate?如何在 sklearn cross_validate 中获得单次运行的混淆矩阵?
【发布时间】:2020-10-15 03:27:39
【问题描述】:

当我做类似的事情时:

scoring = ["accuracy", "balanced_accuracy", "f1", "precision", "recall", "roc_auc"]

scores = cross_validate(SVC(), my_x, my_y, scoring = scoring , cv=5, verbose=3, return_train_score=True, return_estimator=True)

如何获得单次验证运行的混淆矩阵,例如第一个还是最好的?

我不需要情节或漂亮的东西,只需要数字。如果我至少能看到分裂,那么我可以重新计算它。

【问题讨论】:

标签: python scikit-learn


【解决方案1】:

如果您想在每次迭代期间使用交叉验证来执行一些非常具体的事情,也许最好使用像 StratifiedKFold 这样的 CV 拆分器:

from sklearn.metrics import accuracy_score, confusion_matrix
from sklearn.model_selection import StratifiedKFold
from sklearn.svm import SVC

svm = SVC()
kf = StratifiedKFold(n_splits=5)

scores = []
results = []
for train_index, test_index in kf.split(X, y):
    X_train, X_test = X[train_index], X[test_index]
    y_train, y_test = y[train_index], y[test_index]
    svm.fit(X_train, y_train)
    y_pred = svm.predict(y_test)
    scores.append(accuracy_score(y_test, y_pred)) # use other scoring as prefered 
    results.append(confusion_matrix(y_test, y_pred))

这将为五次迭代中的每一次计算混淆矩阵并将它们存储在results 中。如果您想获得最佳验证轮的混淆矩阵,您还可以在循环中额外计算评分指标(参见@​​987654324@ 列表)并检索相应的混淆矩阵。

【讨论】:

    猜你喜欢
    • 2021-10-25
    • 2021-04-15
    • 2021-08-01
    • 1970-01-01
    • 2019-10-15
    • 2015-12-10
    • 2021-09-29
    • 2020-09-20
    • 1970-01-01
    相关资源
    最近更新 更多