XGBoost的原生接口和xgboost库接口对比

1、XGBoost原生接口----分类

import numpy as np
from sklearn.datasets import load_iris
from sklearn.metrics import accuracy_score
from sklearn.model_selection import train_test_split
import xgboost as xgb

data = load_iris()

x = data.data
y = data.target

x_train, x_test, y_train, y_test = train_test_split(x, y, random_state=0, test_size=0.2)

params = {
    'eta': 0.1,
    'max_depth': 2,
    'min_child_weight': 3,
    'gamma': 0,
    'subsample': 0.8,
    'objective': 'multi:softmax',  # 多分类
    'num_class': 4
}

dtrain = xgb.DMatrix(x_train, y_train)
dtest = xgb.DMatrix(x_test, y_test)

xgbclassifer = xgb.train(params=params, dtrain=dtrain, num_boost_round=100, early_stopping_rounds=5, evals=[(dtrain, 'train'), (dtest, 'test')])

y_pred = xgbclassifer.predict(xgb.DMatrix(x_test))

print(accuracy_score(y_pred, y_test))

[0] train-merror:0.033333 test-merror:0
Multiple eval metrics have been passed: ‘test-merror’ will be used for early stopping.

Will train until test-merror hasn’t improved in 5 rounds.
[1] train-merror:0.041667 test-merror:0
[2] train-merror:0.041667 test-merror:0.033333
[3] train-merror:0.041667 test-merror:0.033333
[4] train-merror:0.041667 test-merror:0.033333
[5] train-merror:0.041667 test-merror:0.033333
Stopping. Best iteration:
[0] train-merror:0.033333 test-merror:0

0.9666666666666667

2、XGBoost的xgboost库接口----分类

import numpy as np
from xgboost import XGBClassifier
from sklearn.datasets import load_iris
from sklearn.metrics import accuracy_score
from sklearn.model_selection import train_test_split
import xgboost as xgb

data = load_iris()

x = data.data
y = data.target

x_train, x_test, y_train, y_test = train_test_split(x, y, random_state=0, test_size=0.2)

xgbclassifier = XGBClassifier(max_depth=3, n_estimators=20, learning_rate=0.1, subsample=0.8)

xgbclassifier.fit(x_train, y_train, eval_set=[(x_train, y_train), (x_test, y_test)], early_stopping_rounds=5)

y_pred = xgbclassifier.predict(x_test)

print(accuracy_score(y_pred, y_test))

[0] validation_0-merror:0.033333 validation_1-merror:0.033333
Multiple eval metrics have been passed: ‘validation_1-merror’ will be used for early stopping.

Will train until validation_1-merror hasn’t improved in 5 rounds.
[1] validation_0-merror:0.025 validation_1-merror:0.033333
[2] validation_0-merror:0.033333 validation_1-merror:0
[3] validation_0-merror:0.033333 validation_1-merror:0
[4] validation_0-merror:0.033333 validation_1-merror:0
[5] validation_0-merror:0.033333 validation_1-merror:0
[6] validation_0-merror:0.033333 validation_1-merror:0
[7] validation_0-merror:0.033333 validation_1-merror:0
Stopping. Best iteration:
[2] validation_0-merror:0.033333 validation_1-merror:0

1.0

3、XGBoost原生----回归

import numpy as np
from sklearn.datasets import load_boston
from sklearn.metrics import mean_squared_error
from sklearn.model_selection import train_test_split
import xgboost as xgb

data = load_boston()

x = data.data
y = data.target

x_train, x_test, y_train, y_test = train_test_split(x, y, random_state=0, test_size=0.2)

params = {
    'eta': 0.1,
    'max_depth': 2,
    'min_child_weight': 3,
    'gamma': 0,
    'subsample': 0.8,
    'objective': 'reg:linear', # 回归
    'reg_alpha':1
}

dtrain = xgb.DMatrix(x_train, y_train)
dtest = xgb.DMatrix(x_test, y_test)

xgbregressor = xgb.train(params=params, dtrain=dtrain, num_boost_round=100, early_stopping_rounds=5, evals=[(dtrain, 'train'), (dtest, 'test')])

y_pred = xgbregressor.predict(xgb.DMatrix(x_test))

print(np.sqrt(mean_squared_error(y_pred, y_test)))

[0] train-rmse:21.6947 test-rmse:21.3639
Multiple eval metrics have been passed: ‘test-rmse’ will be used for early stopping.

Will train until test-rmse hasn’t improved in 5 rounds.
[1] train-rmse:19.6488 test-rmse:19.465
[2] train-rmse:17.8414 test-rmse:17.7644
[3] train-rmse:16.2054 test-rmse:16.1864
[4] train-rmse:14.7492 test-rmse:14.7806
[5] train-rmse:13.4231 test-rmse:13.509
[6] train-rmse:12.2381 test-rmse:12.422
[7] train-rmse:11.1695 test-rmse:11.5429
[8] train-rmse:10.2049 test-rmse:10.706
[9] train-rmse:9.34731 test-rmse:10.0028
[10] train-rmse:8.58752 test-rmse:9.40787
[11] train-rmse:7.90445 test-rmse:8.8334
[12] train-rmse:7.29988 test-rmse:8.36099
[13] train-rmse:6.74157 test-rmse:7.94237
[14] train-rmse:6.24426 test-rmse:7.52309
[15] train-rmse:5.79598 test-rmse:7.15649
[16] train-rmse:5.41376 test-rmse:6.86358
[17] train-rmse:5.08339 test-rmse:6.63507
[18] train-rmse:4.76331 test-rmse:6.37569
[19] train-rmse:4.49806 test-rmse:6.24609
[20] train-rmse:4.2651 test-rmse:6.12079
[21] train-rmse:4.052 test-rmse:6.0177
[22] train-rmse:3.8769 test-rmse:5.94355
[23] train-rmse:3.72633 test-rmse:5.83258
[24] train-rmse:3.5919 test-rmse:5.76591
[25] train-rmse:3.47819 test-rmse:5.7071
[26] train-rmse:3.35521 test-rmse:5.67141
[27] train-rmse:3.26314 test-rmse:5.64485
[28] train-rmse:3.17101 test-rmse:5.5705
[29] train-rmse:3.08592 test-rmse:5.54694
[30] train-rmse:3.01147 test-rmse:5.52277
[31] train-rmse:2.95376 test-rmse:5.50492
[32] train-rmse:2.90023 test-rmse:5.46906
[33] train-rmse:2.85581 test-rmse:5.45411
[34] train-rmse:2.81319 test-rmse:5.44314
[35] train-rmse:2.7772 test-rmse:5.39054
[36] train-rmse:2.74545 test-rmse:5.37906
[37] train-rmse:2.70755 test-rmse:5.37026
[38] train-rmse:2.68586 test-rmse:5.35974
[39] train-rmse:2.65275 test-rmse:5.3586
[40] train-rmse:2.6273 test-rmse:5.3658
[41] train-rmse:2.60126 test-rmse:5.3334
[42] train-rmse:2.5753 test-rmse:5.33958
[43] train-rmse:2.55022 test-rmse:5.2795
[44] train-rmse:2.5341 test-rmse:5.26619
[45] train-rmse:2.51932 test-rmse:5.25968
[46] train-rmse:2.5013 test-rmse:5.26137
[47] train-rmse:2.48564 test-rmse:5.26688
[48] train-rmse:2.46977 test-rmse:5.26344
[49] train-rmse:2.46011 test-rmse:5.25327
[50] train-rmse:2.44694 test-rmse:5.26889
[51] train-rmse:2.43788 test-rmse:5.25938
[52] train-rmse:2.42795 test-rmse:5.25899
[53] train-rmse:2.41213 test-rmse:5.25003
[54] train-rmse:2.40068 test-rmse:5.20116
[55] train-rmse:2.3746 test-rmse:5.16312
[56] train-rmse:2.35764 test-rmse:5.15578
[57] train-rmse:2.33862 test-rmse:5.08581
[58] train-rmse:2.32361 test-rmse:5.10207
[59] train-rmse:2.3075 test-rmse:5.08633
[60] train-rmse:2.29808 test-rmse:5.09013
[61] train-rmse:2.28913 test-rmse:5.10143
[62] train-rmse:2.27928 test-rmse:5.09378
Stopping. Best iteration:
[57] train-rmse:2.33862 test-rmse:5.08581

5.093776169532693

4、XGBoost的xgboost库接口----回归

import numpy as np
from sklearn.datasets import load_boston
from sklearn.metrics import mean_squared_error
from sklearn.model_selection import train_test_split
from xgboost import XGBRegressor

data = load_boston()

x = data.data
y = data.target

x_train, x_test, y_train, y_test = train_test_split(x, y, random_state=0, test_size=0.2)

xgbregressor = XGBRegressor(n_estimators=20, learning_rate=0.1, max_depth=3)

xgbregressor.fit(x_train, y_train, eval_set=[(x_train, y_train), (x_test, y_test)], early_stopping_rounds=5)

y_pred = xgbregressor.predict(x_test)

print(np.sqrt(mean_squared_error(y_pred, y_test)))

[0] validation_0-rmse:21.6873 validation_1-rmse:21.3565
Multiple eval metrics have been passed: ‘validation_1-rmse’ will be used for early stopping.

Will train until validation_1-rmse hasn’t improved in 5 rounds.
[1] validation_0-rmse:19.638 validation_1-rmse:19.416
[2] validation_0-rmse:17.7989 validation_1-rmse:17.6968
[3] validation_0-rmse:16.1361 validation_1-rmse:16.1302
[4] validation_0-rmse:14.6373 validation_1-rmse:14.7062
[5] validation_0-rmse:13.2927 validation_1-rmse:13.443
[6] validation_0-rmse:12.0829 validation_1-rmse:12.3425
[7] validation_0-rmse:10.9852 validation_1-rmse:11.3743
[8] validation_0-rmse:10.0097 validation_1-rmse:10.4964
[9] validation_0-rmse:9.12183 validation_1-rmse:9.70958
[10] validation_0-rmse:8.3262 validation_1-rmse:9.04683
[11] validation_0-rmse:7.61549 validation_1-rmse:8.46214
[12] validation_0-rmse:6.98275 validation_1-rmse:7.86909
[13] validation_0-rmse:6.40843 validation_1-rmse:7.41576
[14] validation_0-rmse:5.90191 validation_1-rmse:7.061
[15] validation_0-rmse:5.44574 validation_1-rmse:6.73702
[16] validation_0-rmse:5.0438 validation_1-rmse:6.37146
[17] validation_0-rmse:4.67776 validation_1-rmse:6.14817
[18] validation_0-rmse:4.35726 validation_1-rmse:5.94787
[19] validation_0-rmse:4.06703 validation_1-rmse:5.78114
5.781138897439005

发布了51 篇原创文章 · 获赞 74 · 访问量 24万+

猜你喜欢

转载自blog.csdn.net/weixin_44766179/article/details/100074225
今日推荐