我试图用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
为了能够重现结果,您需要为GradientBoostingClassifier修复
random_state
还有一个很好的实践是在开始时修复numpy的
random seed
相关问题 更多 >
编程相关推荐