我正在尝试优化机器学习任务的超参数,并编写了一个函数来测试各种模型,我希望能够采用网格搜索识别的最佳参数,并将它们放入一种格式,以便在准备拟合模型时将它们作为关键字参数传递。
我有这个:
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非常陌生,所以任何帮助都将不胜感激!
1条答案
按热度按时间q3qa4bjr1#
很久以前就有人问过这个问题了,但是除了最后一部分,你基本上都解决了,你可以把字典解包,然后像这样把它们作为函数参数放进去