📅  最后修改于: 2023-12-03 15:35:46.837000             🧑  作者: Mango
XGBoost (eXtreme Gradient Boosting) 是一种使用梯度提升方法的决策树模型,由天池大赛冠军陈天奇博士于2014年提出,并在2016年选择由DMLC流行科学计算库的作者之一陈天奇加入Apache软件基金会进行开源管理。XGBoost 可以被广泛用于回归问题、分类问题以及机器学习中其他问题。
XGBoost 具有如下优势:
使用 pip 安装 XGBoost,可以执行以下代码:
pip install xgboost
或者从源代码编译并安装 XGBoost:
git clone --recursive https://github.com/dmlc/xgboost
cd xgboost
mkdir build
cd build
cmake ..
make -j4
cd ../python-package
python setup.py install
XGBoost 支持 Python、Java、R 三种编程语言,下面以 Python 为例介绍如何使用 XGBoost。
import numpy as np
import xgboost as xgb
from sklearn.datasets import load_boston
from sklearn.metrics import mean_squared_error
from sklearn.model_selection import train_test_split
# 加载数据集
boston = load_boston()
X, y = boston.data, boston.target
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=123)
# 训练数据集
dtrain = xgb.DMatrix(X_train, label=y_train)
# 测试数据集
dtest = xgb.DMatrix(X_test, label=y_test)
# 设置参数
param = {
'max_depth': 3,
'eta': 0.1,
'objective': 'reg:squarederror'
}
# 训练模型
num_round = 100
bst = xgb.train(param, dtrain, num_round)
# 预测测试集
y_pred = bst.predict(dtest)
# 输出MSE
print(f'MSE: {mean_squared_error(y_test, y_pred):.2f}')
import numpy as np
import xgboost as xgb
from sklearn.datasets import load_breast_cancer
from sklearn.metrics import accuracy_score
from sklearn.model_selection import train_test_split
# 加载数据集
cancer = load_breast_cancer()
X, y = cancer.data, cancer.target
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=123)
# 训练数据集
dtrain = xgb.DMatrix(X_train, label=y_train)
# 测试数据集
dtest = xgb.DMatrix(X_test, label=y_test)
# 设置参数
param = {
'max_depth': 3,
'eta': 0.1,
'objective': 'binary:logistic',
'eval_metric': 'auc'
}
# 训练模型
num_round = 100
bst = xgb.train(param, dtrain, num_round)
# 预测测试集
y_pred = bst.predict(dtest)
y_pred[y_pred > 0.5] = 1
y_pred[y_pred <= 0.5] = 0
# 输出准确率
print(f'Accuracy: {accuracy_score(y_test, y_pred):.2f}')
XGBoost 是一个高效、灵活、准确和可解释的机器学习算法,是许多机器学习竞赛和实际应用的首选。它支持回归问题和分类问题,可以用于大规模数据集和高维数据的训练。如果您刚刚开始学习机器学习,XGBoost 可能有一些陡峭的学习曲线。但是,一旦您理解了它的工作原理,并尝试了一些示例代码,您就可以体验到它的优美之处。