ParrotPrediction / docker-course-xgboost

Materials for an online-course - "Practical XGBoost in Python"
http://education.parrotprediction.teachable.com/courses/practical-xgboost-in-python
217 stars 136 forks source link

why is there no evaluate result code tutorial using sklearn api? #8

Open rayeaster opened 6 years ago

rayeaster commented 6 years ago

it seems to me sklearn not supporting those code using native/standard xgboost api.

rayeaster commented 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))