我正在从Kaggle上的this tutorial学习机器学习。在
我试图修改项目结构,以便创建一个新的.py
文件来创建一个新类。这是课程:
class ModelHelper(object):
def __init__(self, model, seed=0, params=None):
params['random_state'] = seed # TypeError: 'NoneType' object does not support item assignment
self.model = model(**params)
def train(self, x_train, y_train):
self.model.fit(x_train, y_train)
def predict(self, x):
return self.model.predict(x)
def fit(self, x, y):
return self.model.fit(x, y)
def feature_importances(self, x, y):
print(self.model.fit(x, y).feature_importances_)
我就是这样用的:
^{pr2}$这是我得到的全部错误:
Traceback (most recent call last):
File "F:/backup/PycharmProjects/KaggleTitanic/DataAnalysis.py", line 191, in <module>
log_reg = ModelHelper(model=LogisticRegression);
File "F:\backup\PycharmProjects\KaggleTitanic\ModelHelper.py", line 3, in __init__
params['random_state'] = seed # TypeError: 'NoneType' object does not support item assignment
TypeError: 'NoneType' object does not support item assignment
可能是我的__init__
参数中的params=None
引起的错误。我想要的是使这个params
字段成为可选的(如果我不想,我就不必通过它)
修改
ModelHelper
,以便在未传递值时正确初始化params
的默认值。在在调用签名中必须使用},这样
params=None
而不是{ModelHelper
的每个实例都使用自己独立的params
字典。也可以通过将调用签名更改为使用**params
来实现这一点,但为了不破坏您可能已经用此签名编写的调用的任何代码,我建议使用上面的答案。在相关问题 更多 >
编程相关推荐