模型选择–网格搜索

2022-09-27 09:52:17 浏览数 (1)

首先使用训练数据训练模型,然后使用交叉验证数据挑选最佳模型,最后使用测试数据测试模型是否完好。

下面举一个训练逻辑回归模型的例子。

假设有四个模型,第一个是一次模型,然后二次,三次,四次模型。我们使用训练数据训练,并算出多项式的斜率和系数等等。

然后使用交叉验证数据计算所有这些模型的F1分数,然后选择F1得分最高的模型,最后使用测试数据确保模型效果完好

算法的参数就是多项式的系数,但是多项式的系数就像物性参数,我们称之为超参数(Hyper-parameters)。

假如我们要训练决策树,此时的超参数为深度,假设深度为1,2,3,4.

参数是树叶和节点等的阈值。

训练-验证-测试.

过程如上。

当有多个超参数时。

for example: SVM。

如何选择最佳内核(kernel)和伽马(gamma)组合。

我们使用网格搜索:即制作一个表格,并列出所有可能的组合,选择最佳组合。

在 sklearn 中的网格搜索

在 sklearn 中的网格搜索非常简单。 我们将用一个例子来说明一下。 假设我们想要训练支持向量机,并且我们想在以下参数之间做出决定:

  • kernel:polyrbf
  • C:0.1,110

具体步骤如下所示:

1. 导入 GridSearchCV

代码语言:javascript复制
from sklearn.model_selection import GridSearchCV

2.选择参数:

现在我们来选择我们想要选择的参数,并形成一个字典。 在这本字典中,键 (keys) 将是参数的名称,值 (values) 将是每个参数可能值的列表。

代码语言:javascript复制
parameters = {'kernel':['poly', 'rbf'],'C':[0.1, 1, 10]}

3.创建一个评分机制 (scorer)

我们需要确认将使用什么指标来为每个候选模型评分。 这里,我们将使用 F1 分数。

代码语言:javascript复制
from sklearn.metrics import make_scorer
from sklearn.metrics import f1_score
scorer = make_scorer(f1_score)

4. 使用参数 (parameter) 和评分机制 (scorer) 创建一个 GridSearch 对象。 使用此对象与数据保持一致 (fit the data) 。

代码语言:javascript复制
# Create the object.
grid_obj = GridSearchCV(clf, parameters, scoring=scorer)
# Fit the data
grid_fit = grid_obj.fit(X, y)

5. 获得最佳估算器 (estimator)

代码语言:javascript复制
best_clf = grid_fit.best_estimator_

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/179714.html原文链接:https://javaforall.cn

0 人点赞