绘制决策树分类器ROC曲线时报key of type tuple not found错误如何解决
错误产生原因
- 索引语法不兼容:
y_test是Pandas一维Series结构,你使用y_test[:, i]这种仅适用于二维numpy数组的切片方式,Pandas会将[:,i]识别为元组类型的索引键,普通Series没有MultiIndex结构,因此触发该KeyError。 - 业务逻辑错配:当前是二分类任务,你写的循环逻辑是多分类场景下逐类别计算ROC的代码,且循环范围
range(M)中的M是TF-IDF的特征数,和分类类别完全无关,属于逻辑误用。 - 入参类型错误:ROC曲线计算依赖样本属于正类的预测概率,你传入的是
predict()输出的硬分类标签(0/1),即便解决索引问题也无法得到正确的ROC曲线。
修复方案
调整ROC绘制函数适配二分类场景,同时将模型输出改为预测正类概率即可,修改后的代码如下:
# 修正后的ROC绘制函数,适配二分类场景 def plot_roc(y_score): fpr, tpr, _ = roc_curve(y_test, y_score) roc_auc = auc(fpr, tpr) # 可在此处补充matplotlib绘图逻辑 return roc_auc # 决策树训练部分改为输出正类(类别1)的预测概率 dt_gini = DecisionTreeClassifier(criterion="gini", random_state=0) dt_gini.fit(X_train, y_train) # 取predict_proba返回的第二列,对应类别为1的概率 dt_gini_score = dt_gini.predict_proba(X_test)[:, 1] print(plot_roc(dt_gini_score))
内容的提问来源于stack exchange,提问作者melololo
相关产品推荐
相关产品推荐

