Wednesday, November 29, 2017

Introduction to XGBoost using PIMA Indians dataset


In [1]:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
%matplotlib inline
%config InlineBackend.figure_format = 'retina'
import warnings
warnings.filterwarnings('ignore')
In [2]:
pima = pd.read_csv("diabetes.csv")
In [3]:
pima.head()
Out[3]:
Pregnancies Glucose BloodPressure SkinThickness Insulin BMI DiabetesPedigreeFunction Age Outcome
0 6 148 72 35 0 33.6 0.627 50 1
1 1 85 66 29 0 26.6 0.351 31 0
2 8 183 64 0 0 23.3 0.672 32 1
3 1 89 66 23 94 28.1 0.167 21 0
4 0 137 40 35 168 43.1 2.288 33 1
In [4]:
from xgboost import XGBClassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
/Applications/anaconda/anaconda/lib/python3.6/site-packages/sklearn/cross_validation.py:41: DeprecationWarning: This module was deprecated in version 0.18 in favor of the model_selection module into which all the refactored classes and functions are moved. Also note that the interface of the new CV iterators are different from that of this module. This module will be removed in 0.20.
  "This module will be removed in 0.20.", DeprecationWarning)
In [5]:
X = pima.drop(["Outcome"], axis = 1)
In [6]:
y = pima.Outcome
In [7]:
# split data into train and test sets
seed = 7
test_size = 0.33
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=test_size,
    random_state=seed)

Building model

In [8]:
model = XGBClassifier()
In [9]:
model.fit(X_train,y_train)
Out[9]:
XGBClassifier(base_score=0.5, colsample_bylevel=1, colsample_bytree=1,
       gamma=0, learning_rate=0.1, max_delta_step=0, max_depth=3,
       min_child_weight=1, missing=None, n_estimators=100, nthread=-1,
       objective='binary:logistic', reg_alpha=0, reg_lambda=1,
       scale_pos_weight=1, seed=0, silent=True, subsample=1)
In [10]:
y_pred = model.predict(X_test)
In [11]:
y_pred
Out[11]:
array([0, 1, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1,
       1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 1, 1, 0, 0, 0,
       1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1,
       1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0,
       1, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1,
       1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
       0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0,
       0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0,
       0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1, 1, 0, 0, 1,
       0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 0,
       0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 1,
       1])
In [12]:
accuracy_score(y_pred, y_test)
Out[12]:
0.77952755905511806

Stratified K-fold

In [13]:
from sklearn.model_selection import StratifiedKFold
from sklearn.model_selection import cross_val_score
In [14]:
model = XGBClassifier()
In [15]:
kfold = StratifiedKFold(n_splits=10, random_state=8)
In [16]:
results = cross_val_score(model, X,y, cv = kfold)
In [17]:
results
Out[17]:
array([ 0.76623377,  0.81818182,  0.77922078,  0.64935065,  0.74025974,
        0.79220779,  0.80519481,  0.84415584,  0.68421053,  0.81578947])
In [18]:
results.mean()
Out[18]:
0.76948051948051943
In [19]:
results.std()
Out[19]:
0.058776019273300915

Visualisation

In [20]:
from xgboost import plot_tree, plot_importance
In [24]:
model.fit(X,y)
Out[24]:
XGBClassifier(base_score=0.5, colsample_bylevel=1, colsample_bytree=1,
       gamma=0, learning_rate=0.1, max_delta_step=0, max_depth=3,
       min_child_weight=1, missing=None, n_estimators=100, nthread=-1,
       objective='binary:logistic', reg_alpha=0, reg_lambda=1,
       scale_pos_weight=1, seed=0, silent=True, subsample=1)
In [22]:
!pip install graphviz
Collecting graphviz
  Downloading graphviz-0.8.1-py2.py3-none-any.whl
Installing collected packages: graphviz
Successfully installed graphviz-0.8.1
In [38]:
ax = plot_tree(model)
fig = ax.figure
fig.set_size_inches(10, 8)
In [37]:
ax = plot_importance(model)
fig = ax.figure
fig.set_size_inches(10, 8)

Feature Selection

In [40]:
# Fit model using each importance as a threshold
thresholds = sorted(model.feature_importances_)
In [41]:
thresholds
Out[41]:
[0.046511628,
 0.08139535,
 0.089700997,
 0.10465116,
 0.14119601,
 0.1627907,
 0.17109634,
 0.2026578]
In [43]:
from sklearn.feature_selection import SelectFromModel
In [46]:
for thresh in thresholds:
  # select features using threshold
  selection = SelectFromModel(model, threshold=thresh, prefit=True)
  select_X_train = selection.transform(X_train)
  # train model
  selection_model = XGBClassifier()
  selection_model.fit(select_X_train, y_train)
# eval model
  select_X_test = selection.transform(X_test)
  y_pred = selection_model.predict(select_X_test)
  predictions = [round(value) for value in y_pred]
  accuracy = accuracy_score(y_test, predictions)
  print("Thresh=%.3f, n=%d, Accuracy: %.2f%%" % (thresh, select_X_train.shape[1],
      accuracy*100.0))
Thresh=0.047, n=8, Accuracy: 77.95%
Thresh=0.081, n=7, Accuracy: 75.59%
Thresh=0.090, n=6, Accuracy: 77.95%
Thresh=0.105, n=5, Accuracy: 76.38%
Thresh=0.141, n=4, Accuracy: 76.38%
Thresh=0.163, n=3, Accuracy: 74.41%
Thresh=0.171, n=2, Accuracy: 75.98%
Thresh=0.203, n=1, Accuracy: 69.29%

Evaluate models using learning curves

In [54]:
eval_set = [(X_train,y_train), (X_test,y_test)]
model.fit(X_train,y_train, eval_set= eval_set, eval_metric=["logloss","error"],verbose = True)
[0] validation_0-logloss:0.655154 validation_0-error:0.22179 validation_1-logloss:0.660186 validation_1-error:0.259843
[1] validation_0-logloss:0.623321 validation_0-error:0.202335 validation_1-logloss:0.634854 validation_1-error:0.26378
[2] validation_0-logloss:0.596815 validation_0-error:0.196498 validation_1-logloss:0.612239 validation_1-error:0.26378
[3] validation_0-logloss:0.574026 validation_0-error:0.200389 validation_1-logloss:0.593118 validation_1-error:0.255906
[4] validation_0-logloss:0.553853 validation_0-error:0.202335 validation_1-logloss:0.578303 validation_1-error:0.255906
[5] validation_0-logloss:0.536789 validation_0-error:0.202335 validation_1-logloss:0.564942 validation_1-error:0.26378
[6] validation_0-logloss:0.521477 validation_0-error:0.194553 validation_1-logloss:0.555113 validation_1-error:0.23622
[7] validation_0-logloss:0.507801 validation_0-error:0.200389 validation_1-logloss:0.54499 validation_1-error:0.255906
[8] validation_0-logloss:0.495257 validation_0-error:0.194553 validation_1-logloss:0.539151 validation_1-error:0.248031
[9] validation_0-logloss:0.484235 validation_0-error:0.188716 validation_1-logloss:0.531819 validation_1-error:0.248031
[10] validation_0-logloss:0.474463 validation_0-error:0.184825 validation_1-logloss:0.526065 validation_1-error:0.248031
[11] validation_0-logloss:0.465102 validation_0-error:0.180934 validation_1-logloss:0.51977 validation_1-error:0.232283
[12] validation_0-logloss:0.457304 validation_0-error:0.177043 validation_1-logloss:0.514979 validation_1-error:0.228346
[13] validation_0-logloss:0.44952 validation_0-error:0.178988 validation_1-logloss:0.50927 validation_1-error:0.228346
[14] validation_0-logloss:0.442121 validation_0-error:0.177043 validation_1-logloss:0.506086 validation_1-error:0.228346
[15] validation_0-logloss:0.435904 validation_0-error:0.175097 validation_1-logloss:0.503565 validation_1-error:0.228346
[16] validation_0-logloss:0.430177 validation_0-error:0.173152 validation_1-logloss:0.503591 validation_1-error:0.228346
[17] validation_0-logloss:0.425058 validation_0-error:0.173152 validation_1-logloss:0.500805 validation_1-error:0.228346
[18] validation_0-logloss:0.419677 validation_0-error:0.173152 validation_1-logloss:0.497605 validation_1-error:0.224409
[19] validation_0-logloss:0.415222 validation_0-error:0.173152 validation_1-logloss:0.495328 validation_1-error:0.232283
[20] validation_0-logloss:0.41033 validation_0-error:0.167315 validation_1-logloss:0.494777 validation_1-error:0.232283
[21] validation_0-logloss:0.405705 validation_0-error:0.169261 validation_1-logloss:0.494274 validation_1-error:0.23622
[22] validation_0-logloss:0.402225 validation_0-error:0.171206 validation_1-logloss:0.493333 validation_1-error:0.23622
[23] validation_0-logloss:0.398076 validation_0-error:0.173152 validation_1-logloss:0.492211 validation_1-error:0.232283
[24] validation_0-logloss:0.395053 validation_0-error:0.177043 validation_1-logloss:0.491936 validation_1-error:0.228346
[25] validation_0-logloss:0.392106 validation_0-error:0.173152 validation_1-logloss:0.490578 validation_1-error:0.228346
[26] validation_0-logloss:0.389044 validation_0-error:0.177043 validation_1-logloss:0.490895 validation_1-error:0.224409
[27] validation_0-logloss:0.385267 validation_0-error:0.177043 validation_1-logloss:0.490646 validation_1-error:0.224409
[28] validation_0-logloss:0.382761 validation_0-error:0.177043 validation_1-logloss:0.491911 validation_1-error:0.228346
[29] validation_0-logloss:0.380311 validation_0-error:0.175097 validation_1-logloss:0.491407 validation_1-error:0.232283
[30] validation_0-logloss:0.376631 validation_0-error:0.175097 validation_1-logloss:0.488828 validation_1-error:0.228346
[31] validation_0-logloss:0.374024 validation_0-error:0.177043 validation_1-logloss:0.487867 validation_1-error:0.224409
[32] validation_0-logloss:0.371973 validation_0-error:0.178988 validation_1-logloss:0.487297 validation_1-error:0.224409
[33] validation_0-logloss:0.369996 validation_0-error:0.175097 validation_1-logloss:0.487562 validation_1-error:0.228346
[34] validation_0-logloss:0.36738 validation_0-error:0.171206 validation_1-logloss:0.487788 validation_1-error:0.228346
[35] validation_0-logloss:0.363693 validation_0-error:0.16537 validation_1-logloss:0.487962 validation_1-error:0.224409
[36] validation_0-logloss:0.362079 validation_0-error:0.177043 validation_1-logloss:0.488218 validation_1-error:0.228346
[37] validation_0-logloss:0.35992 validation_0-error:0.163424 validation_1-logloss:0.489582 validation_1-error:0.224409
[38] validation_0-logloss:0.357945 validation_0-error:0.169261 validation_1-logloss:0.489334 validation_1-error:0.216535
[39] validation_0-logloss:0.35586 validation_0-error:0.167315 validation_1-logloss:0.490969 validation_1-error:0.220472
[40] validation_0-logloss:0.352872 validation_0-error:0.16537 validation_1-logloss:0.48978 validation_1-error:0.216535
[41] validation_0-logloss:0.351036 validation_0-error:0.167315 validation_1-logloss:0.490704 validation_1-error:0.216535
[42] validation_0-logloss:0.349321 validation_0-error:0.159533 validation_1-logloss:0.492369 validation_1-error:0.216535
[43] validation_0-logloss:0.346132 validation_0-error:0.155642 validation_1-logloss:0.492247 validation_1-error:0.216535
[44] validation_0-logloss:0.343088 validation_0-error:0.151751 validation_1-logloss:0.492908 validation_1-error:0.212598
[45] validation_0-logloss:0.340633 validation_0-error:0.149805 validation_1-logloss:0.491999 validation_1-error:0.224409
[46] validation_0-logloss:0.339084 validation_0-error:0.145914 validation_1-logloss:0.491278 validation_1-error:0.224409
[47] validation_0-logloss:0.336401 validation_0-error:0.143969 validation_1-logloss:0.491611 validation_1-error:0.220472
[48] validation_0-logloss:0.33483 validation_0-error:0.143969 validation_1-logloss:0.492568 validation_1-error:0.224409
[49] validation_0-logloss:0.331806 validation_0-error:0.142023 validation_1-logloss:0.494289 validation_1-error:0.232283
[50] validation_0-logloss:0.329741 validation_0-error:0.136187 validation_1-logloss:0.493236 validation_1-error:0.228346
[51] validation_0-logloss:0.328944 validation_0-error:0.138132 validation_1-logloss:0.493717 validation_1-error:0.224409
[52] validation_0-logloss:0.327021 validation_0-error:0.138132 validation_1-logloss:0.493996 validation_1-error:0.224409
[53] validation_0-logloss:0.324874 validation_0-error:0.138132 validation_1-logloss:0.494553 validation_1-error:0.232283
[54] validation_0-logloss:0.323564 validation_0-error:0.132296 validation_1-logloss:0.496089 validation_1-error:0.228346
[55] validation_0-logloss:0.321531 validation_0-error:0.136187 validation_1-logloss:0.497547 validation_1-error:0.228346
[56] validation_0-logloss:0.320381 validation_0-error:0.134241 validation_1-logloss:0.498491 validation_1-error:0.224409
[57] validation_0-logloss:0.318469 validation_0-error:0.13035 validation_1-logloss:0.497816 validation_1-error:0.224409
[58] validation_0-logloss:0.317531 validation_0-error:0.13035 validation_1-logloss:0.497638 validation_1-error:0.224409
[59] validation_0-logloss:0.315915 validation_0-error:0.13035 validation_1-logloss:0.499368 validation_1-error:0.224409
[60] validation_0-logloss:0.313413 validation_0-error:0.128405 validation_1-logloss:0.500054 validation_1-error:0.224409
[61] validation_0-logloss:0.312326 validation_0-error:0.128405 validation_1-logloss:0.500986 validation_1-error:0.224409
[62] validation_0-logloss:0.310292 validation_0-error:0.126459 validation_1-logloss:0.501629 validation_1-error:0.224409
[63] validation_0-logloss:0.309323 validation_0-error:0.126459 validation_1-logloss:0.501099 validation_1-error:0.224409
[64] validation_0-logloss:0.308337 validation_0-error:0.126459 validation_1-logloss:0.500962 validation_1-error:0.224409
[65] validation_0-logloss:0.307393 validation_0-error:0.126459 validation_1-logloss:0.502172 validation_1-error:0.224409
[66] validation_0-logloss:0.305182 validation_0-error:0.122568 validation_1-logloss:0.501892 validation_1-error:0.220472
[67] validation_0-logloss:0.303725 validation_0-error:0.122568 validation_1-logloss:0.502023 validation_1-error:0.216535
[68] validation_0-logloss:0.302821 validation_0-error:0.118677 validation_1-logloss:0.503108 validation_1-error:0.216535
[69] validation_0-logloss:0.30198 validation_0-error:0.120623 validation_1-logloss:0.502673 validation_1-error:0.216535
[70] validation_0-logloss:0.29991 validation_0-error:0.120623 validation_1-logloss:0.502662 validation_1-error:0.216535
[71] validation_0-logloss:0.298055 validation_0-error:0.122568 validation_1-logloss:0.50343 validation_1-error:0.216535
[72] validation_0-logloss:0.296987 validation_0-error:0.120623 validation_1-logloss:0.504037 validation_1-error:0.216535
[73] validation_0-logloss:0.295123 validation_0-error:0.120623 validation_1-logloss:0.504439 validation_1-error:0.216535
[74] validation_0-logloss:0.294368 validation_0-error:0.118677 validation_1-logloss:0.503697 validation_1-error:0.216535
[75] validation_0-logloss:0.293513 validation_0-error:0.118677 validation_1-logloss:0.504477 validation_1-error:0.216535
[76] validation_0-logloss:0.292825 validation_0-error:0.116732 validation_1-logloss:0.504244 validation_1-error:0.216535
[77] validation_0-logloss:0.290549 validation_0-error:0.116732 validation_1-logloss:0.504356 validation_1-error:0.216535
[78] validation_0-logloss:0.288623 validation_0-error:0.114786 validation_1-logloss:0.505392 validation_1-error:0.216535
[79] validation_0-logloss:0.286707 validation_0-error:0.114786 validation_1-logloss:0.505377 validation_1-error:0.212598
[80] validation_0-logloss:0.285468 validation_0-error:0.114786 validation_1-logloss:0.505835 validation_1-error:0.212598
[81] validation_0-logloss:0.284848 validation_0-error:0.11284 validation_1-logloss:0.505566 validation_1-error:0.212598
[82] validation_0-logloss:0.282342 validation_0-error:0.110895 validation_1-logloss:0.507154 validation_1-error:0.212598
[83] validation_0-logloss:0.27989 validation_0-error:0.11284 validation_1-logloss:0.507149 validation_1-error:0.212598
[84] validation_0-logloss:0.278918 validation_0-error:0.110895 validation_1-logloss:0.507921 validation_1-error:0.208661
[85] validation_0-logloss:0.277478 validation_0-error:0.105058 validation_1-logloss:0.509487 validation_1-error:0.204724
[86] validation_0-logloss:0.275833 validation_0-error:0.103113 validation_1-logloss:0.509011 validation_1-error:0.212598
[87] validation_0-logloss:0.275338 validation_0-error:0.103113 validation_1-logloss:0.509105 validation_1-error:0.212598
[88] validation_0-logloss:0.273798 validation_0-error:0.101167 validation_1-logloss:0.510977 validation_1-error:0.212598
[89] validation_0-logloss:0.273078 validation_0-error:0.105058 validation_1-logloss:0.512553 validation_1-error:0.204724
[90] validation_0-logloss:0.272368 validation_0-error:0.105058 validation_1-logloss:0.513817 validation_1-error:0.208661
[91] validation_0-logloss:0.271264 validation_0-error:0.105058 validation_1-logloss:0.513864 validation_1-error:0.208661
[92] validation_0-logloss:0.269753 validation_0-error:0.103113 validation_1-logloss:0.514176 validation_1-error:0.208661
[93] validation_0-logloss:0.269307 validation_0-error:0.103113 validation_1-logloss:0.514497 validation_1-error:0.208661
[94] validation_0-logloss:0.268809 validation_0-error:0.101167 validation_1-logloss:0.513991 validation_1-error:0.208661
[95] validation_0-logloss:0.268196 validation_0-error:0.101167 validation_1-logloss:0.514902 validation_1-error:0.212598
[96] validation_0-logloss:0.266979 validation_0-error:0.095331 validation_1-logloss:0.516441 validation_1-error:0.204724
[97] validation_0-logloss:0.265722 validation_0-error:0.095331 validation_1-logloss:0.516317 validation_1-error:0.212598
[98] validation_0-logloss:0.26507 validation_0-error:0.097276 validation_1-logloss:0.517809 validation_1-error:0.216535
[99] validation_0-logloss:0.264441 validation_0-error:0.097276 validation_1-logloss:0.518922 validation_1-error:0.220472
Out[54]:
XGBClassifier(base_score=0.5, colsample_bylevel=1, colsample_bytree=1,
       gamma=0, learning_rate=0.1, max_delta_step=0, max_depth=3,
       min_child_weight=1, missing=None, n_estimators=100, nthread=-1,
       objective='binary:logistic', reg_alpha=0, reg_lambda=1,
       scale_pos_weight=1, seed=0, silent=True, subsample=1)
In [51]:
# retrieve performance metrics
results = model.evals_result()
epochs = len(results['validation_0']['error'])
x_axis = range(0, epochs)
# plot log loss
fig, ax = plt.subplots()
ax.plot(x_axis, results['validation_0']['logloss'], label='Train')
ax.plot(x_axis, results['validation_1']['logloss'], label='Test') 
ax.legend()
plt.ylabel('Log Loss')
plt.title('XGBoost Log Loss')
plt.show()
# plot classification error
fig, ax = plt.subplots()
ax.plot(x_axis, results['validation_0']['error'], label='Train')
ax.plot(x_axis, results['validation_1']['error'], label='Test') 
ax.legend()
plt.ylabel('Classification Error')
plt.title('XGBoost Classification Error')
plt.show()
                                                                                           

Early stopping

In [58]:
model.fit(X_train, y_train, eval_metric="logloss", eval_set=eval_set, early_stopping_rounds=10, verbose = True)
[0] validation_0-logloss:0.655154 validation_1-logloss:0.660186
Multiple eval metrics have been passed: 'validation_1-logloss' will be used for early stopping.

Will train until validation_1-logloss hasn't improved in 10 rounds.
[1] validation_0-logloss:0.623321 validation_1-logloss:0.634854
[2] validation_0-logloss:0.596815 validation_1-logloss:0.612239
[3] validation_0-logloss:0.574026 validation_1-logloss:0.593118
[4] validation_0-logloss:0.553853 validation_1-logloss:0.578303
[5] validation_0-logloss:0.536789 validation_1-logloss:0.564942
[6] validation_0-logloss:0.521477 validation_1-logloss:0.555113
[7] validation_0-logloss:0.507801 validation_1-logloss:0.54499
[8] validation_0-logloss:0.495257 validation_1-logloss:0.539151
[9] validation_0-logloss:0.484235 validation_1-logloss:0.531819
[10] validation_0-logloss:0.474463 validation_1-logloss:0.526065
[11] validation_0-logloss:0.465102 validation_1-logloss:0.51977
[12] validation_0-logloss:0.457304 validation_1-logloss:0.514979
[13] validation_0-logloss:0.44952 validation_1-logloss:0.50927
[14] validation_0-logloss:0.442121 validation_1-logloss:0.506086
[15] validation_0-logloss:0.435904 validation_1-logloss:0.503565
[16] validation_0-logloss:0.430177 validation_1-logloss:0.503591
[17] validation_0-logloss:0.425058 validation_1-logloss:0.500805
[18] validation_0-logloss:0.419677 validation_1-logloss:0.497605
[19] validation_0-logloss:0.415222 validation_1-logloss:0.495328
[20] validation_0-logloss:0.41033 validation_1-logloss:0.494777
[21] validation_0-logloss:0.405705 validation_1-logloss:0.494274
[22] validation_0-logloss:0.402225 validation_1-logloss:0.493333
[23] validation_0-logloss:0.398076 validation_1-logloss:0.492211
[24] validation_0-logloss:0.395053 validation_1-logloss:0.491936
[25] validation_0-logloss:0.392106 validation_1-logloss:0.490578
[26] validation_0-logloss:0.389044 validation_1-logloss:0.490895
[27] validation_0-logloss:0.385267 validation_1-logloss:0.490646
[28] validation_0-logloss:0.382761 validation_1-logloss:0.491911
[29] validation_0-logloss:0.380311 validation_1-logloss:0.491407
[30] validation_0-logloss:0.376631 validation_1-logloss:0.488828
[31] validation_0-logloss:0.374024 validation_1-logloss:0.487867
[32] validation_0-logloss:0.371973 validation_1-logloss:0.487297
[33] validation_0-logloss:0.369996 validation_1-logloss:0.487562
[34] validation_0-logloss:0.36738 validation_1-logloss:0.487788
[35] validation_0-logloss:0.363693 validation_1-logloss:0.487962
[36] validation_0-logloss:0.362079 validation_1-logloss:0.488218
[37] validation_0-logloss:0.35992 validation_1-logloss:0.489582
[38] validation_0-logloss:0.357945 validation_1-logloss:0.489334
[39] validation_0-logloss:0.35586 validation_1-logloss:0.490969
[40] validation_0-logloss:0.352872 validation_1-logloss:0.48978
[41] validation_0-logloss:0.351036 validation_1-logloss:0.490704
[42] validation_0-logloss:0.349321 validation_1-logloss:0.492369
Stopping. Best iteration:
[32] validation_0-logloss:0.371973 validation_1-logloss:0.487297

Out[58]:
XGBClassifier(base_score=0.5, colsample_bylevel=1, colsample_bytree=1,
       gamma=0, learning_rate=0.1, max_delta_step=0, max_depth=3,
       min_child_weight=1, missing=None, n_estimators=100, nthread=-1,
       objective='binary:logistic', reg_alpha=0, reg_lambda=1,
       scale_pos_weight=1, seed=0, silent=True, subsample=1)
In [55]:
y_pred = model.predict(X_test)
In [56]:
accuracy_score(y_test, y_pred)
Out[56]:
0.77952755905511806

No comments :

Post a Comment