You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Jupyter Notebook中构建Scikit-learn决策树时遭遇KeyError问题求助

解决Scikit-learn决策树构建中的KeyError问题

看起来你遇到的KeyError问题根源在于pandas没有正确解析你的CSV文件列名,咱们一步步来定位和解决:

问题原因分析

你的数据集示例里,字段是用分号;分隔的(比如第一行是A;B;C;D;E;F;Class),但pandas.read_csv()的默认分隔符是逗号,。这就导致pandas把整行内容当作了单一列,自然找不到你指定的A、B等列名,触发了KeyError。

解决方案步骤

1. 修正CSV读取的分隔符参数

修改读取数据的代码,明确指定sep=';'参数,让pandas正确拆分列:

from pandas import read_csv
from sklearn import tree

# 关键:指定分隔符为分号
data = read_csv("data.csv", sep=';')
print(data.head())

# 先验证列名是否正确加载
print("数据集列名:", data.columns)

运行这段代码后,data.columns应该输出Index(['A', 'B', 'C', 'D', 'E', 'F', 'Class'], dtype='object'),说明列已正确识别。

2. 确认列名完全匹配

如果还是有问题,检查一下数据集的列名是否存在空格、大小写差异(比如列名是'A '带尾空格,或者'a'小写)。如果有,调整predictors列表里的名称,确保和实际列名完全一致。

3. 正常执行后续模型代码

确认列正确后,原来的模型构建代码就可以正常运行了:

predictors = ['A','B','C','D','E','F']
X = data[predictors]
Y = data.Class

decisionTreeClassifier = tree.DecisionTreeClassifier(criterion="entropy")
dTree = decisionTreeClassifier.fit(X, Y)

dotData = tree.export_graphviz(dTree, out_file=None)
print(dotData)

额外排查技巧

如果仍然遇到问题,可以用data.info()查看数据集的结构,确认列的数量、名称和数据类型是否符合预期,帮助进一步定位问题。

内容的提问来源于stack exchange,提问作者chiasuz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.01 00:28:11