无法从gridsearch复制结果

2024-09-27 07:30:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图用gridsearch优化我的算法的参数,但是,当我应用优化的参数时得到的结果远低于网格搜索得到的结果。我知道这可能是因为gridsearch上的交叉验证。有没有办法避免这种差异,并在我的预测和gridsearch上获得大致相同的结果

from sklearn.model_selection import GridSearchCV
from sklearn.ensemble import GradientBoostingClassifier


X_train, X_test, y_train, y_test = train_test_split(X, y, 
                                                    test_size=0.33,                                                                                                                                                             
                                                    random_state=42)

gbc = GradientBoostingClassifier()
parameters = {'learning_rate':[0.01, 0.05, 0.1, 0.5, 1], 
              'min_samples_split':[2,5,10,20], 
              'max_depth':[2,3,5,10]}

clf = GridSearchCV(gbc, parameters, cv=3, scoring='f1')
clf.fit(X_train, y_train)
print("Best parameter (CV score=%0.3f):" % clf.best_score_)

# Best parameter (CV score=0.737)


gbc_tunned = gbc.set_params(**clf.best_params_)
gbc_tunned .fit(X_train,y_train.values.ravel()) 
ypred_test = lgbc_tunned .predict(X_test)
print(f1_score(y_test,ypred_test))

# 0.7008433734939759

Tags: fromtestimport参数trainsklearnsplitparameters
1条回答
网友
1楼 · 发布于 2024-09-27 07:30:18

为了能够重现结果,您需要为GradientBoostingClassifier修复random_state

gbc = GradientBoostingClassifier(random_state=42)

还有一个很好的实践是在开始时修复numpy的random seed

numpy.random.seed(42)

相关问题 更多 >

    热门问题