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

自定义RandomForestClassifier的fit方法报错:样本数不一致[514,514,4]

自定义RandomForestClassifier拟合时样本数不匹配问题解决

问题代码

X = data.iloc[:,1:-1].values
y = data.iloc[:, -1].values

xTrain, xTest, yTrain, yTest = train_test_split(X, y, test_size = 0.2)

print(f"Train Data: {xTrain.shape}, {yTrain.shape}")
print(f"Test Data: {xTest.shape}, {yTest.shape}")

forest = RandomForestClassifier()
forest.fit(xTrain, yTrain)

accuracy = forest.score(xTest, yTest)
print('The accuracy was', 100*accuracy, '% on the test data.')

问题描述

上述代码使用scikit-learn官方的RandomForestClassifier时运行完全正常,训练集形状输出也验证了样本数一致,但替换为自定义实现的RandomForestClassifier后,调用forest.fit(xTrain, yTrain)抛出以下错误:

报错信息

ValueError                                Traceback (most recent call last)
<ipython-input-65-3353626df052> in <module>
      1 forest = RandomForestClassifier()
----> 2 forest.fit(xTrain, yTrain)
      3 
      4 accuracy = forest.score(xTest, yTest)
      5 print('The accuracy was', 100*accuracy, '% on the test data.')
----------------------------------------------------------------------
    330     uniques = np.unique(lengths)
    331     if len(uniques) > 1:
---> 332         raise ValueError(
    333             "Found input variables with inconsistent numbers of samples: %r"
    334             % [int(l) for l in lengths]

ValueError: Found input variables with inconsistent numbers of samples: [514, 514, 4]

问题分析与解决

报错里的[514, 514, 4]说明自定义代码的fit方法中存在参数处理错误,导致样本数统计逻辑混乱,核心排查点如下:

  • 检查fit方法的参数接收逻辑:确保fit(X, y)中X是二维数组(样本数×特征数),y是一维数组(样本数×1)。如果自定义代码误将y当作二维数组处理,或者混淆了X与y的维度,可在fit方法开头添加y = y.ravel()强制将y转为一维。
  • 检查内部决策树的拟合调用:遍历创建决策树时,确认传递给单棵决策树的训练数据与标签样本数一致,避免出现某棵树接收的X切片和y切片样本数不匹配的情况。
  • 排查样本数统计的代码:报错中的lengths大概率来自自定义代码中对输入数组的样本数统计,比如误将多个无关数组纳入统计(如额外传入了特征列数),需修正统计逻辑,只统计X和y的样本数。
  • 验证输入数据形状:再次确认yTrain的形状是(514,)而非(514,4),如果yTrain是二维数组,自定义代码需兼容这种格式,或者提前将其转为一维。

内容的提问来源于stack exchange,提问作者Dimas Ari Lumintang

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 10:51:10