如何解决Python决策树中的Unknown label type: 'unknown'错误
解决决策树训练时的"Unknown label type: 'unknown'"错误
嘿,这个问题我之前刚踩过坑!咱们来一步步搞定它:
问题根源
虽然你说ndf['Score']的取值是0或1,但大概率是数据类型不匹配导致的——scikit-learn的DecisionTreeClassifier要求分类标签是数值类型(整数/浮点数),如果你的Score列存的是字符串形式的"0"/"1",或者是object类型的数值,模型就会识别不了,抛出这个错误。
解决步骤
先检查数据类型与取值
运行下面的代码确认Score列的类型和所有唯一值:print(ndf['Score'].dtype) print(ndf['Score'].unique())第一行看类型,如果是
object就说明是字符串类型;第二行可以排查有没有除0、1之外的奇怪值。转换为正确的数值类型
- 如果是字符串转整数,直接用astype转换:
ndf['Score'] = ndf['Score'].astype(int) - 要是怕有异常值(比如空字符串、其他字符),用
pd.to_numeric更稳妥,还能自动处理异常:
转换后记得检查有没有生成NaN值:ndf['Score'] = pd.to_numeric(ndf['Score'], errors='coerce')
如果有NaN,可以选择删除对应行(print(ndf['Score'].isna().sum())ndf = ndf.dropna(subset=['Score']))或者填充合理值。
- 如果是字符串转整数,直接用astype转换:
重新训练模型
转换完成后,再重新执行你的代码流程:X = ndf.drop('Score', axis=1) y = ndf['Score'] X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=42, test_size=0.30) model = tree.DecisionTreeClassifier() model.fit(X_train, y_train)这次应该就能正常训练啦!
内容的提问来源于stack exchange,提问作者fawkemvegas
相关产品推荐
相关产品推荐

