我试图在交叉验证中获得所有混淆矩阵的平均值我拆分了 cross_val 并获得了所有混淆矩阵

问题描述

我尝试使用 split 函数来拆分数据集并迭代到它们中并预测每次迭代的混淆矩阵,并取所有混淆矩阵的平均值。 我必须构建一个函数来这样做,它适用于我的其他项目,它的预测类为 (0,1),但这不适用于 (1,2) 的预测类

这是我正在使用的数据的 head()

    Age Gender  TB  DB  Alkphos Sgpt    Sgot    TP  ALB A/G Class
0   65  Female  0.7 0.1 187 16  18  6.8 3.3 0.90    1
1   62  Male    10.9    5.5 699 64  100 7.5 3.2 0.74    1
2   62  Male    7.3 4.1 490 60  68  7.0 3.3 0.89    1
3   58  Male    1.0 0.4 182 14  20  6.8 3.4 1.00    1
4   72  Male    3.9 2.0 195 27  59  7.3 2.4 0.40    1
def total_confusion_matrix(model,x,y):
    total_matrix=[]
    cross = RepeatedStratifiedKFold(n_splits=5,n_repeats=10,random_state=1)
    for train_i,test_i in cross.split(x,y):
        x_train,x_test = x[train_i],x[test_i]
        y_train,y_test = y[train_i],y[test_i]
        model.fit(x_train,y_train)
        total_matrix.append(confusion_matrix(y_test,model.predict(x_test)))
    print('The total of confusion matrix in cross validation:')
    sns.heatmap(sum(total_matrix),annot=True)
    plt.title('Total Confusion Matrix')
    plt.show()
    print('\n The Mean confusion matrix in cross Validation:')
    sns.heatmap(sum(total_matrix)/len(total_matrix),annot=True)
    plt.title('Mean Confusion Matrix')
    plt.show()

total_confusion_matrix(rf_best,y)

KeyError: "None of [Int64Index([  0,1,2,3,4,5,6,7,8,11,\n            ...\n            569,570,571,572,573,574,576,577,578,580],\n           dtype='int64',length=464)] are in the [columns]"

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)