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

sklearn Pipeline文本转换后运行RandomForestClassifier报int与str比较TypeError

错误根因

报错发生在模型对目标标签Y进行合法性校验的阶段,和你编写的特征处理Pipeline无关。根本原因是你的Y标签序列中混合存储了int和str两种类型的值,比如同时存在1(整数)和"1"(字符串)、2和"3"这类值。sklearn在校验分类标签时会调用np.unique()去重,该方法需要对值排序,而int和str类型之间无法执行大小比较,因此抛出该错误。
你之前单独验证CountVectorizer转换正常,是因为该步骤仅处理特征X,不涉及目标标签Y,因此无法提前暴露Y的类型问题。

排查步骤
  • 执行代码print(Y.unique()),查看输出的标签值是否同时存在不带引号的数字和带引号的字符串
  • 执行代码print(Y.apply(type).unique()),查看输出的类型列表是否同时包含<class 'int'>和<class 'str'>
    只要上述任意一项符合,就能确认是Y标签类型混合的问题。
解决方案

将Y标签统一转换为同一种类型即可,二选一:

  1. 若标签本质为数值分类,统一转成整数类型:
Y = Y.astype(int)
  1. 若标签允许为字符串格式,统一转成字符串类型:
Y = Y.astype(str)

转换完成后再执行数据集切分、模型拟合的代码即可正常运行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 07:06:02