在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
相关产品推荐
相关产品推荐

