KNeighborsRegressor.fit()传2个参数仍缺位置参数y是什么原因
错误原因
你代码的核心问题是没有实例化KNeighborsRegressor类,直接将类本身赋值给了mod变量:
- 类的实例方法(比如
fit()、predict())在调用时,第一个参数默认会传入实例对象本身(也就是self),只有实例化后的对象调用方法时,才会自动补全self参数。 - 你写的
mod=KNeighborsRegressor是把类本身赋值给了mod,此时调用mod.fit(X,y),Python会把你传入的X识别为self参数,y识别为fit方法的第一个形参X,自然就会提示缺少第二个形参y。 - 官方示例里的
neigh = KNeighborsRegressor(n_neighbors=2)是调用类的构造方法完成实例化,得到的neigh是类的实例对象,此时调用fit方法会自动传入self,你只需要传X和y两个参数即可。 - 你原代码中单独写的
KNeighborsRegressor()一行没有赋值给任何变量,属于无效代码,可直接删除。
修正后的代码
from sklearn.datasets import load_boston X,y=load_boston(return_X_y=True) from sklearn.neighbors import KNeighborsRegressor # 加括号完成类的实例化,括号内可传入n_neighbors等自定义参数 mod = KNeighborsRegressor() mod.fit(X, y) mod.predict(X)
内容的提问来源于stack exchange,提问作者Ruturaj ghumkar
相关产品推荐
相关产品推荐

