我在机器学习领域是新手。我的问题是:我已经构建了一个模型,并且正在尝试优化该模型。通过一些研究,我发现交叉验证可以帮助我避免模型过拟合。此外,网格搜索(GridSearchCV)可以帮助我优化模型的参数,并最终确定最佳参数。 现在我的问题是,我应该先进行交叉验证,然后使用网格搜索来确定最佳参数,还是使用GridSearchCV就足够了,因为它本身就执行了交叉验证?

正如@***建议的,您可以在网格搜索中使用cv参数。

GridSearchCV(estimator, param_grid, scoring=None, n_jobs=None, iid='deprecated', refit=True, cv=None, verbose=0, pre_dispatch='2*n_jobs',error_score=nan,return_train_score=False)

此外,文档明确指出,如果是分类问题,它会自动确保分层处理。

对于整数/无输入,如果估计器是分类器,并且y是二元或多类,StratifiedKFold将被使用。在所有其他情况下,使用KFold。

然而,我还想补充一点:您可以根据Y_target变量的值计数动态调整K折。您不能在K折中将最低频率设置为1,否则在训练时会抛出错误。我曾经遇到过这种情况。使用下面的代码片段可以帮助您解决这个问题。

例如

import pandas as pdY_target=pd.Series([0,1,1,1,1,0,0,0,6,6,6,6,6,6,6,6,6])if Y_target.value_counts().iloc[-1]<2:    raise Exception ("No value can have frequency count as 1 in Y-target")else:    Kfold=Y_target.value_counts().iloc[-1]

然后您可以将Kfold分配给网格搜索中的cv参数


回答:

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注