1

我正在尝试优化机器学习任务的超参数,并编写了一个用于测试各种模型的函数。我希望能够采用网格搜索确定的最佳参数,并将它们放在一种格式中,这样当我准备好拟合模型时,我可以将它们作为关键字参数传递。

我有这个:

def optimization(classifier):
    if classifier == LR:
         param_grid = {'class_weight': [None,'balanced'], 'solver': ['liblinear', 'sag']}
    if classifier == DT:
        param_grid = {'criterion': ['gini', 'entropy'], 'splitter': ['best', 'random'], 'class_weight': [None,'balanced']}
    if classifier == RF:
        param_grid = {'n_estimators': [10,20,30], 'criterion': ['gini', 'entropy']}
    print(str(classifier))
    print('Number of tested models: %i' % np.prod([len(param_grid[element]) for element in param_grid]))
    search = GridSearchCV(classifier(), param_grid, cv=10)
    search.fit(X,y)
    print('Best parameters: %s' % search.best_params_)
    print('Best score: ' + str(search.best_score_))

optimization(LR) # with LR being a logistic regression model

它输出这个:

<class 'sklearn.linear_model.logistic.LogisticRegression'>
Number of tested models: 4
Best parameters: {'solver': 'sag', 'class_weight': None}
Best score: 0.801363055516

理想情况下,我希望将输出中确定的最佳参数转换为如下所示的内容:

solver=sag, class_weight=None

这样我以后就可以轻松地将它们插入一个函数中。我对 Python 很陌生,所以任何帮助都将不胜感激!

4

0 回答 0