Numpy 错误“ValueError:找到昏暗 3 的数组。预计估计器 <= 2。”

Posted

技术标签:

【中文标题】Numpy 错误“ValueError:找到昏暗 3 的数组。预计估计器 <= 2。”【英文标题】:Numpy Error "ValueError: Found array with dim 3. Estimator expected <= 2." 【发布时间】:2020-10-04 12:52:54 【问题描述】:

我是 scikit-learn 的 ML 新手 在我花了很多时间学习 ML 的类型等等之后,我只是希望它能够工作。


from sklearn import tree
import pandas as pd
import numpy as np

df = pd.read_csv('test.csv')

age = df.Age.to_list()
age = np.array(age).reshape(-1,1)

inc = df.Income.to_list()
inc = np.array(inc).reshape(-1,1)

stud = df.Student.to_list()
stud = np.array(stud).reshape(-1,1)

buy = df.Buy.to_list()
buy = np.array(buy).reshape(-1,1)

X = [age,inc,stud]
y = [[buy]]

clf = tree.DecisionTreeClassifier()
clf = clf.fit(X, y)
'''
Income:
1 - high
2 - medium
3 - low

Student:
1 - yes
2 - no

'''
age = 34
inc = 1
stud = 2


pred = clf.predict(age,ince,stud)

print(pred)

但我得到这个错误:

Traceback(最近一次通话最后一次):文件“D:\Huzefa\Desktop\ML.py”, 第 23 行,在 clf = clf.fit(X, y) 文件 "C:\Users\Huzefa\AppData\Local\Programs\Python\Python36\lib\site-packages\sklearn\tree_classes.py", 第 894 行,合适 X_idx_sorted=X_idx_sorted) 文件 "C:\Users\Huzefa\AppData\Local\Programs\Python\Python36\lib\site-packages\sklearn\tree_classes.py", 第 158 行,合适 check_y_params)) 文件“C:\Users\Huzefa\AppData\Local\Programs\Python\Python36\lib\site-packages\sklearn\base.py”, 第 429 行,在 _validate_data 中 X = check_array(X, **check_X_params) 文件 "C:\Users\Huzefa\AppData\Local\Programs\Python\Python36\lib\site-packages\sklearn\utils\validation.py", 第 73 行,inner_f 返回 f(**kwargs) 文件 "C:\Users\Huzefa\AppData\Local\Programs\Python\Python36\lib\site-packages\sklearn\utils\validation.py", 第 642 行,在 check_array % (array.ndim, estimator_name)) ValueError: Found array with dim 3. Estimator expected

如果我可以纠正我的脚本以使其正常工作,我将有动力继续使用 ML 非常感谢所有帮助!

【问题讨论】:

试试 - pred = clf.predict([age,ince,stud]) 谢谢你的回答兄弟!但它不会工作。还是一样的错误 buy 已经是一个列表,所以当你定义y 时,将其设置为y = [buy]y = np.array(buy).. 【参考方案1】:

您定义 X 和 y 的方式对我来说似乎过于复杂,这种选择背后有什么具体原因吗? 您还可以执行以下操作:

X = df[["Age","Income","Student"]]
y = df.Buy

另外,通过做

clf = clf.fit(X, y)

您正在根据所有可用数据训练您的决策树。如果这是一个训练数据集并且你有一个存储在其他地方的测试数据集,那没关系;如果没有,您需要先拆分数据,以便您可以训练模型并测试所述训练的效率。 train_test_split 对此很有用。

【讨论】:

你能帮我实现“train_test_split”功能吗?实际上,我对 ML 很陌生,并且正在努力学习基础知识 @HuzefaUsama 不客气!如果您有新的问题,我鼓励您发布其他帖子,这会让人们更容易回答您。

以上是关于Numpy 错误“ValueError:找到昏暗 3 的数组。预计估计器 <= 2。”的主要内容,如果未能解决你的问题,请参考以下文章

Cython:致命错误:使用 numpy 找不到“numpy/arrayobject.h”文件

python numpy错误“TypeError:'numpy.float64'对象不能解释为整数”

导入错误:没有名为 numpy 的模块(已安装 numpy)

numpy 引发错误:TypeError:无法推断类型的架构:<class 'numpy.float64'>

无法将 NumPy 数组转换为张量(不支持的对象类型 numpy.ndarray)错误

Numpy.ndarray 对象不可调用错误原因