0
我正在學習從Kaggle上的this tutorial機器學習。'NoneType'對象不支持__init__中的項目分配
我嘗試修改項目結構,因此我創建了一個新的.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_)
這也是我如何使用它:
from helper import ModelHelper
log_reg = ModelHelper(model=LogisticRegression);
這是完整的錯誤,我得到:
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
可能通過params=None
中導致錯誤我的__init__
參數。我想要的是讓這個params
場可選的(我沒有通過,如果我不想)
你應該像'def __init __(self,model,seed = 0,params = {})'' –
@akashkarothiya那樣將param定義爲'dict'這將是一個糟糕的想法:https://stackoverflow.com/q/ 3001761分之1132941。也許可以改爲「** params」,然後你可以傳遞任意的關鍵字參數而不是字典。或者從'params = params或{}'開始。 – jonrsharpe
啊,我差點忘了這個,謝謝@jonrsharpe –