一、GridSearchCV介紹
GridSearchCV是sklearn提供的一種自動化調參工具,能夠遍歷給定的參數組合,使用交叉驗證的方式找出最優的參數組合。此外,GridSearchCV還可以並行處理多組參數,加快搜索速度。GridSearchCV包含以下幾個重要參數:
class sklearn.model_selection.GridSearchCV
param_grid:要優化的參數組合,一個字典或列表,其中字典的鍵為想要調整的模型參數名(字符串),值為對應的想要調整的參數值的列表。
scoring:模型評估標準。
cv:cross-validation,交叉驗證生成器或可迭代的迭代器,例如KFold。
n_jobs:並行運行的作業數。
二、使用GridSearchCV優化模型參數選擇的示例
在下面的示例中,我們將介紹如何使用GridSearchCV優化邏輯回歸模型的參數選擇。
首先,我們加載需要的庫和數據集:
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import GridSearchCV
from sklearn.datasets import load_iris
iris = load_iris()
X = iris.data
y = iris.target
接下來,我們將定義一個邏輯回歸模型,並將其參數放在param_grid字典中。
lr = LogisticRegression()
param_grid = {"penalty": ['l1', 'l2'], "C": [0.01, 0.1, 1, 10]}
這裡需要注意的是,penalty參數表示正則化的方式,‘l1’表示L1正則化,‘l2’表示L2正則化,而C參數表示正則化的強度。
接下來,我們將使用GridSearchCV來尋找最佳參數組合,並對模型進行擬合和預測:
grid_search = GridSearchCV(lr, param_grid=param_grid, cv=5, scoring='accuracy', n_jobs=-1)
grid_search.fit(X, y)
print("Best parameters: ", grid_search.best_params_)
print("Best cross-validation score: {:.2f}".format(grid_search.best_score_))
print("Best estimator:\n{}".format(grid_search.best_estimator_))
最終,我們將得到最佳參數組合、在最佳參數下的交叉驗證得分和最佳模型的信息。
三、如何使用GridSearchCV針對多個模型進行參數選擇
在實際應用中,我們可能需要針對多個模型進行參數選擇。在此情況下,我們可以使用for循環來遍歷多個模型並進行參數選擇。
下面的示例介紹了如何遍歷多個模型並使用GridSearchCV進行參數選擇。我們將使用邏輯回歸和支持向量機兩種模型,對於每個模型,我們將定義不同的參數組合。
from sklearn.svm import SVC
# 定義邏輯回歸和支持向量機的參數組合
lr_param_grid = {"penalty": ['l1', 'l2'], "C": [0.01, 0.1, 1, 10]}
svm_param_grid = {"kernel": ['linear', 'rbf', 'poly'], "C": [0.1, 1, 10], "gamma": [0.1, 1, 10]}
# 定義模型列表和對應的參數組合字典列表
models = [
{
'name': 'LogisticRegression',
'model': LogisticRegression(),
'params': lr_param_grid
},
{
'name': 'SVC',
'model': SVC(),
'params': svm_param_grid
}
]
# 遍歷每個模型並進行參數選擇
for model in models:
print(model['name'])
grid_search = GridSearchCV(model['model'], model['params'], cv=5, scoring="accuracy", n_jobs=-1)
grid_search.fit(X, y)
print("Best parameters: ", grid_search.best_params_)
print("Best cross-validation score: {:.2f}".format(grid_search.best_score_))
print("Best estimator:\n{}".format(grid_search.best_estimator_))
print("\n")
最終,我們將對每個模型得到最佳參數組合、在最佳參數下的交叉驗證得分和最佳模型的信息。
原創文章,作者:RGUB,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/134212.html