Python 如何复制GridSearchCV结果?

Python 如何复制GridSearchCV结果?,python,scikit-learn,auc,gridsearchcv,Python,Scikit Learn,Auc,Gridsearchcv,使用GridSearchCV,我尝试最大化logisticsregression分类器的AUC clf_log = LogisticRegression(C=1, random_state=0).fit(X_train, y_train) from sklearn.model_selection import GridSearchCV grid_params = {'penalty': ['l1','l2'], 'C': [0.001,0.01,0.1,1,10,100], 'max_ite

使用
GridSearchCV
,我尝试最大化
logisticsregression分类器的
AUC

clf_log = LogisticRegression(C=1, random_state=0).fit(X_train, y_train)

from sklearn.model_selection import GridSearchCV

grid_params = {'penalty': ['l1','l2'], 'C': [0.001,0.01,0.1,1,10,100], 'max_iter' : [100]} 
gs = GridSearchCV(clf_log, grid_params, scoring='roc_auc', cv=5)
gs.fit(X_train, y_train)`
我得到了
gs.最佳估计值和
gs.最佳参数的
0.7630647186779661
,分别如下:

<< LogisticRegression(C=10, class_weight=None, dual=False, fit_intercept=True,
                   intercept_scaling=1, l1_ratio=None, max_iter=100,
                   multi_class='auto', n_jobs=None, penalty='l2',
                   random_state=0, solver='lbfgs', tol=0.0001, verbose=0,
                   warm_start=False) >>

{'C': 10, 'max_iter': 100, 'penalty': 'l2'}
>
{'C':10,'最大值':100,'惩罚':'l2'}

然而,当我将这些参数重新引入我原来的
clf_log
时,我只得到
AUC
0.5359918677005525
。我遗漏了什么(我想:简历部分)?如何获得和复制相同的结果?谢谢

网格搜索CV使用K倍交叉验证,即当您使用
fit
方法时,它将数据分为测试集和训练集(CV=5表示测试集是数据集的1/5),并执行
CV
次(本例中为5次)。因此,您不应该使用
X\u-train
y\u-train
,而是使用
X
y
(假设您不需要第三个验证集),因为拆分是在内部完成的

gs.fit(X, y)
在此之后,假设您的最佳参数是
{C':10,'max_iter':100,'poulding':'l2'}
。现在说你想应用这个。如果要复制GridSearchCV的输出,则需要再次使用k折叠交叉验证(如果使用
train\u test\u split
,则结果会略有不同)


这样你应该得到同样的AUC。您可以参考此

网格搜索CV使用K折叠交叉验证,即,当您使用
fit
方法时,它将数据分为测试集和训练集(CV=5表示测试集是数据集的1/5),并执行
CV
次(在本例中为5次)。因此,您不应该使用
X\u-train
y\u-train
,而是使用
X
y
(假设您不需要第三个验证集),因为拆分是在内部完成的

gs.fit(X, y)
在此之后,假设您的最佳参数是
{C':10,'max_iter':100,'poulding':'l2'}
。现在说你想应用这个。如果要复制GridSearchCV的输出,则需要再次使用k折叠交叉验证(如果使用
train\u test\u split
,则结果会略有不同)


这样你应该得到同样的AUC。您可以参考此

从哪里获得0.53 AUC?那是在你执行X_测试的时候吗?因为据我所知,GridSearchCV正在应用k-fold验证,只查看您的培训数据。因此,可能您拟合过度,或者您的测试数据集与您的训练数据集有很大不同?0.53使用相同的训练数据。但是,如果您要评估分类器,通常必须根据从未通过的测试数据进行评估。你的简历是否合适?我看到你在你的Logistic回归中应用了一个拟合,但是你也必须调用gs.ft(),因为它将执行所有的交叉验证。这将帮助我,你和其他人试图得到一个类似问题的答案。你从哪里得到0.53 AUC?那是在你执行X_测试的时候吗?因为据我所知,GridSearchCV正在应用k-fold验证,只查看您的培训数据。因此,可能您拟合过度,或者您的测试数据集与您的训练数据集有很大不同?0.53使用相同的训练数据。但是,如果您要评估分类器,通常必须根据从未通过的测试数据进行评估。你的简历是否合适?我看到你在你的Logistic回归中应用了一个拟合,但是你也必须调用gs.ft(),因为它将执行所有的交叉验证。这将有助于我、你和其他人尝试获得一个类似问题的答案。感谢-澄清一下,这是否意味着即使在
CV K-fold
(5)下,模型也只是单独测试了5次,而不是通过累积5次来改进单个模型?模型训练了5次,每次使用不同的训练和测试分割,最后的分数是所有5个分数的平均值。这样做是为了使最终分数(准确性等)不会被特定的测试和训练分割所掩盖。不,单一模型没有累积改进,但仍建议使用。我建议在YouTube上观看关于k-fold交叉验证的教程以获得更多的澄清。感谢澄清,这是否意味着即使在
CV k-fold
(5)下,该模型也只是单独测试了5次,而不是通过累计训练5次来改进单个模型?该模型训练了5次,每次都有不同的训练和测试分数,最终分数是所有5个分数的平均值。这样做是为了使最终分数(准确性等)不会被特定的测试和训练分割所掩盖。不,单一模型没有累积改进,但仍建议使用。我建议在YouTube上观看关于k折叠交叉验证的教程,以获得更多澄清。