微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ValueError:找到带有暗淡 3 的数组估计器预期 <= 2 python

如何解决ValueError:找到带有暗淡 3 的数组估计器预期 <= 2 python

我正在尝试使用名为 x&y 的列表中的一些训练和测试数据执行决策树。 我的火车数据 x 是这样的:

const data = [
    {prop1: '1a',prop2: '2c',prop3: '3a',prop4: '4a'},{prop1: '1a',prop2: '2d',];

和y:

[array([[19.,14.,0.8],[23.,24.,[25.,26.,[22.,1. ],29.,1.4],[36.,86.,1.6],[28.,52.,[21.,20.,28.,[24.,27.,[18.,8.,0.6],[30.,58.,1.2],30.,[32.,65.,47.,[26.,41.,71.,2.2],[27.,45.,2. ],[29.,53.,11.,[20.,23.,19.,15.,[19.,18.,0.4],55.,59.,17.,0.8]])]

当我尝试表演时

[array([ 3100.,2750.,7800.,6000.,15000.,15500.,5600.,8000.,7500.,4000.,9000.,5850.,5750.,18000.,4500.,22000.,21500.,24000.,14000.,4000.])]

我收到错误 dtree= DecisionTreeRegressor(random_state=0,max_depth=1) dtree.fit(x_train,y_train) 并且无法通过 reshape 解决它,因为这些是列表。有什么建议吗?

解决方法

首先,我建议您将 X 和 Y 转换为 numpy 数组,但我不能 100% 确定您的变量是否确实如此,因为您尚未将代码上传到此处。其次,看看你的变量。正如 page 中所说:

X{array-like,sparse matrix} 形状 (n_samples,n_features)

yarray 形状的 (n_samples,) 或 (n_samples,n_outputs)

fit 函数需要 XY 数组中的二维数组。而 X_train 是 3D。

所以你需要重塑这两个。一种解决方案可以是:

AMSWER 在阅读他/她的评论后进行了编辑

无法训练数据的原因有两个:

  • X_train 的形状不好
  • Y_train 的形状不好

您使用 X_train 传递 3D 数组,而 fit 只允许您使用 2D。此外,您的 Y_train 具有 (1,30) 形状,这意味着您一次传递 30 个数据。您需要将它们分开并作为 (30,) 传递,如下所示:

from sklearn.tree import DecisionTreeRegressor
import numpy as np

X_train = np.array([np.array([[19.,14.,0.8],[23.,24.,[25.,26.,[22.,1. ],29.,1.4],[36.,86.,1.6],[28.,52.,[21.,20.,28.,[24.,27.,[18.,8.,0.6],[30.,58.,1.2],30.,[32.,65.,47.,[26.,41.,71.,2.2],[27.,45.,2. ],[29.,53.,11.,[20.,23.,19.,15.,[19.,18.,0.4],55.,59.,17.,0.8]])])

dimX1,dimX2,dimX3 = np.array(X_train).shape
X_train = np.reshape(np.array(X_train),(dimX1*dimX2,dimX3))

Y_train = np.array([np.array([ 3100.,2750.,7800.,6000.,15000.,15500.,5600.,8000.,7500.,4000.,9000.,5850.,5750.,18000.,4500.,22000.,21500.,24000.,14000.,4000.])])

dimY1,dimY2 = Y_train.shape
Y_train = np.reshape(np.array(Y_train),(dimY2,))

print(X_train.shape,Y_train.shape)
dtree= DecisionTreeRegressor(random_state=0,max_depth=1)
dtree.fit(X_train,Y_train)

它的输出是:

>>> (30,3) (30,)

>>> DecisionTreeRegressor(ccp_alpha=0.0,criterion='mse',max_depth=1,max_features=None,max_leaf_nodes=None,min_impurity_decrease=0.0,min_impurity_split=None,min_samples_leaf=1,min_samples_split=2,min_weight_fraction_leaf=0.0,presort='deprecated',random_state=0,splitter='best')

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。