程序运行报错:TypeError: fit()缺少1个必需的位置参数'y'
解决sklearn决策树fit()的TypeError问题
嘿,我一眼就看到你代码里的两个关键问题,正是它们导致了这个错误:
1. 没有实例化决策树分类器类
你现在的代码里:
algo=tree.DecisionTreeClassifier
这只是把DecisionTreeClassifier这个类本身赋值给了algo,而不是创建这个类的实例对象。fit()是实例方法,必须通过类的实例来调用,而不是类本身。
你需要给类名加上括号,创建一个实例:
algo = tree.DecisionTreeClassifier() # 括号不能少!
2. 方法名拼写错误
你调用预测方法的时候写成了pridict,但sklearn里的正确方法名是predict(注意中间是'e'不是'i'):
# 错误写法 res=train.pridict([test_setosa]) # 正确写法 res = train.predict([test_setosa])
另外,我注意到你用了np.delete但没有导入numpy,所以还要在代码开头加上:
import numpy as np
修正后的完整代码参考:
import numpy as np from sklearn import tree from sklearn.datasets import load_iris iris = load_iris() x = iris.data x = np.delete(x, np.s_[::50], 0) y = iris.target y = np.delete(y, np.s_[::50], 0) # 创建分类器实例 algo = tree.DecisionTreeClassifier() # 训练模型 train = algo.fit(x, y) # 注意predict的拼写 test_setosa = [5.1, 3.5, 1.4, 0.2] # 示例测试数据,你可以替换成自己的 res = train.predict([test_setosa]) print(res)
这样修改后,你的代码应该就能正常运行啦!
内容的提问来源于stack exchange,提问作者Anand Kumar Singh
相关产品推荐
相关产品推荐

