传入Sklearn实例化模型至函数设参数时遇TypeError:对象不可调用
错误原因与解决方案:TypeError: 'LogisticRegression' object is not callable
错误原因
你代码中lr = LogisticRegression()已经生成了一个LogisticRegression的实例对象,而非类本身。当把这个实例传入logistic函数后,执行model(random_state=0)是试图调用一个已实例化的对象——但sklearn的模型实例并不支持被调用,因此触发了TypeError。
解决方法
方法一:传入类而非实例
直接将LogisticRegression类传入函数,在函数内部完成实例化和参数设置:
from sklearn.linear_model import LogisticRegression def logistic(model_class): test = model_class(random_state=0) return test # 传入类,而非已实例化的对象 logistic(LogisticRegression)
方法二:通过set_params修改已有实例的参数
如果必须传入已创建的实例,可利用sklearn模型自带的set_params方法修改参数:
from sklearn.linear_model import LogisticRegression lr = LogisticRegression() def logistic(model): # 调用set_params修改实例参数 test = model.set_params(random_state=0) return test logistic(lr)
内容的提问来源于stack exchange,提问作者Eisen
相关产品推荐
相关产品推荐

