如何解决sklearn决策树调用fit()时报缺少参数y的TypeError错误
报错解决方法
错误原因
你直接调用了DecisionTreeClassifier类本身的fit()和predict()方法,没有使用已经实例化好的对象clf调用。scikit-learn的模型实例方法会自动将实例自身作为第一个参数self传入,直接用类调用时,你传入的X_train会被识别为self参数,就会触发缺少必填参数y的报错。
需修正的代码点
- 错误写法:
clf = DecisionTreeClassifier.fit(X_train, y_train),应改为使用已经实例化的clf对象调用fit方法 - 错误写法:
y_pred = DecisionTreeClassifier.predict(X_test),应改为使用训练完成的clf对象调用predict方法
修正后完整代码
# Decision Tree from sklearn.tree import DecisionTreeClassifier from sklearn.metrics import r2_score, mean_squared_error clf = DecisionTreeClassifier() # 用实例对象调用fit方法训练 clf.fit(X_train, y_train) # 用训练好的实例对象做预测 y_pred = clf.predict(X_test) print(r2_score(y_test, y_pred)) print(mean_squared_error(y_test, y_pred))
额外说明
DecisionTreeClassifier是分类任务模型,而r2_score、mean_squared_error是回归任务的常用评估指标,如果你的需求是做分类任务,建议替换为准确率、F1值等分类评估指标,不影响当前报错的解决。
内容的提问来源于stack exchange,提问作者Nayan Kumar Sinha
相关产品推荐
相关产品推荐

