我是一个完整的新手在ML与Scikit-Learning我只是想这工作后,我花了很多时间,我学习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(最近一次调用最后一次):File"D:\Huzefa\Desktop\ML.py",第23行,在clf=clf.fit(X, y)File"C:\User\Huzefa\AppData\Local\程序\Python\Python36\lib\site-包\sklear\tree_classes.py",第894行,适合X_idx_sorted=X_idx_sorted)File"C:\User\Huzefa\AppData\Local\程序\Python\Python36\lib\site-包\sklear\tree_classes.py",第158行,适合check_y_params)File"C:\用户\Huzefa\AppData\本地\程序\Python\Python36\lib\site-包\sklear\base.py",第429行,在_validate_dataX=check_array(X,**check_X_params)File"C:\用户\Huzefa\AppData\本地\程序\Python\Python36\lib\site-包\sklear\utils\validation.py",第73行,inner_f返回f(**kwargs本地\程序\Python\Python36\lib\site-包\sklear\utils\validation.py",第642行,check_array%(array. ndim,estimator_name))ValueError:找到带有dim 3的数组。需要估计器
如果我能纠正我的脚本,使其工作,我将被激励继续进一步与ML所有的帮助都非常感谢!
你定义X和y的方式对我来说似乎过于复杂了,这个选择背后有什么具体的原因吗?你也可以做以下事情:
X = df[["Age","Income","Student"]]
y = df.Buy
另外,通过做
clf = clf.fit(X, y)
你正在所有可用的数据上训练你的决策树。如果这是一个训练数据集,并且你有一个存储在其他地方的测试数据集,那没关系;如果没有,你需要先拆分数据,这样你就可以训练模型并测试所述训练的效率。train_test_split
是一个有用的函数。