XGBoost을 사용하고 eval_metric
을 auc
(here과 같이)으로 최적화하려고합니다.다른`eval_metric`에 대해 XGboost를 사용하여 sklearn 파이프 라인을 최적화하는 방법은 무엇입니까?
분류기를 직접 사용할 때 제대로 작동하지만 pipeline으로 사용하려고하면 오류가 발생합니다.
.fit
인자를 sklearn 파이프 라인에 전달하는 올바른 방법은 무엇입니까?
예 :
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.datasets import load_iris
from xgboost import XGBClassifier
import xgboost
import sklearn
print('sklearn version: %s' % sklearn.__version__)
print('xgboost version: %s' % xgboost.__version__)
X, y = load_iris(return_X_y=True)
# Without using the pipeline:
xgb = XGBClassifier()
xgb.fit(X, y, eval_metric='auc') # works fine
# Making a pipeline with this classifier and a scaler:
pipe = Pipeline([('scaler', StandardScaler()), ('classifier', XGBClassifier())])
# using the pipeline, but not optimizing for 'auc':
pipe.fit(X, y) # works fine
# however this does not work (even after correcting the underscores):
pipe.fit(X, y, classifier__eval_metric='auc') # fails
오류 :
TypeError: before_fit() got an unexpected keyword argument 'classifier__eval_metric'
xgboost의 버전과 관련된 :
xgboost.__version__
0.6
pip3 freeze | grep xgboost
xgboost==0.6a2
은 신발류.
'roc_auc'을 사용해 보셨습니까? – gabboshow
그것은 sklearn 버전과 잘 작동합니다 : 0.18 xgboost 버전 : 0.6 – gabboshow