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

如何解决Python决策树中的Unknown label type: 'unknown'错误

解决决策树训练时的"Unknown label type: 'unknown'"错误

嘿,这个问题我之前刚踩过坑!咱们来一步步搞定它:

问题根源

虽然你说ndf['Score']的取值是0或1,但大概率是数据类型不匹配导致的——scikit-learn的DecisionTreeClassifier要求分类标签是数值类型(整数/浮点数),如果你的Score列存的是字符串形式的"0"/"1",或者是object类型的数值,模型就会识别不了,抛出这个错误。

解决步骤

  1. 先检查数据类型与取值
    运行下面的代码确认Score列的类型和所有唯一值:

    print(ndf['Score'].dtype)
    print(ndf['Score'].unique())
    

    第一行看类型,如果是object就说明是字符串类型;第二行可以排查有没有除0、1之外的奇怪值。

  2. 转换为正确的数值类型

    • 如果是字符串转整数,直接用astype转换:
      ndf['Score'] = ndf['Score'].astype(int)
      
    • 要是怕有异常值(比如空字符串、其他字符),用pd.to_numeric更稳妥,还能自动处理异常:
      ndf['Score'] = pd.to_numeric(ndf['Score'], errors='coerce')
      
      转换后记得检查有没有生成NaN值:
      print(ndf['Score'].isna().sum())
      
      如果有NaN,可以选择删除对应行(ndf = ndf.dropna(subset=['Score']))或者填充合理值。
  3. 重新训练模型
    转换完成后,再重新执行你的代码流程:

    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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 07:40:37