Open rayeaster opened 6 years ago
working code using sklearn api for: exisiting metric(self-created metric works simliar with native/standard api), evaluation result print, early stop
from xgboost.sklearn import XGBClassifier
from sklearn.datasets import load_svmlight_files
from sklearn.metrics import accuracy_score
#using sklearn api
X_train, y_train, X_test, y_test = load_svmlight_files(('../data/agaricus.txt.train', 'C:/users/lma/Desktop/xgb/data/agaricus.txt.test'))
params = {
'objective': 'binary:logistic',
'max_depth': 1,
'learning_rate': 0.5,
'silent': 1.0,
'n_estimators': 1500
}
#evaluate result with specified metric and early stop
eval_set = [(X_test, y_test)]
#you could use self created metric here simply by setting eval_metric=misclassified
bst = XGBClassifier(**params).fit(X_train, y_train, early_stopping_rounds=10, eval_metric="logloss", eval_set=eval_set, verbose=True)
results = bst.evals_result()
print('evaluation result:', results)
y_pred = bst.predict(X_test)
predictions = [round(value) for value in y_pred]
accuracy = accuracy_score(y_test, predictions)
print("Accuracy: %.2f%%" % (accuracy * 100.0))
it seems to me sklearn not supporting those code using native/standard xgboost api.