python分类器使用** kwargs的不同参数

时间:2019-03-15 19:27:19

标签: python optimization kwargs

我想使我的代码更具pythonic或更优化,并且陷入困境。经过一天的努力,找出了如何正确使用** kwarg的方法,我得以在我的函数(train_logreg)中使用它们。 当我直接将参数传递给train_logreg函数时:

model = train(X_train_sc, y_train, solver='liblinear', penalty='l1', C=1.0)

工作正常。但是我想自动改变参数[求解器,惩罚,C]。你能帮助我吗? 在下面找到代码:

def train_logreg(X_train_sc, y_train, **kwargs):
    clf = LogisticRegression(random_state=0, 
                             class_weight='balanced',
                             solver=kwargs.get('solver', 'sag'),
                             penalty=kwargs.get('penalty', 'l2'), 
                             C=kwargs.get('C', 1.0))
    model = clf.fit(X_train_sc, y_train)
    return model 

def eval_model(X_test_sc, y_test):
    return model.score(X_test_sc, y_test)

scores = []

for hyperparameters in [{'train_function':train_logreg}]:
    train = hyperparameters.get('train_function')
    model = train(X_train_sc, y_train, solver='liblinear', penalty='l1', C=1.0)
    scores.append(["solver='liblinear', penalty='l1', C=1.0",eval_model(X_test_sc, y_test), eval_model(X_train_sc, y_train)])
    model = train(X_train_sc, y_train, solver='liblinear', penalty='l1', C=0.5)
    scores.append(["solver='liblinear', penalty='l1', C=0.5",eval_model(X_test_sc, y_test), eval_model(X_train_sc, y_train)])
    model = train(X_train_sc, y_train, solver='liblinear', penalty='l1', C=0.1)
    scores.append(["solver='liblinear', penalty='l1', C=0.1",eval_model(X_test_sc, y_test), eval_model(X_train_sc, y_train)])
    model = train(X_train_sc, y_train)
    scores.append(["default",eval_model(X_test_sc, y_test), eval_model(X_train_sc, y_train)])

scores

0 个答案:

没有答案
相关问题