📜  毫升 | XGBoost(极限梯度提升)

📅  最后修改于: 2022-05-13 01:58:08.965000             🧑  作者: Mango

毫升 | XGBoost(极限梯度提升)

XGBoost 是梯度提升决策树的实现。这个库是用 C++ 编写的。它是一种软件库,旨在提高速度和模型性能。它最近在应用机器学习中占据主导地位。 XGBoost 模型在许多 Kaggle 比赛中占据主导地位。

在这个算法中,决策树是按顺序创建的。权重在 XGBoost 中扮演着重要的角色。将权重分配给所有自变量,然后将这些自变量输入到预测结果的决策树中。树预测错误的变量的权重增加,然后将这些变量馈送到第二个决策树。这些单独的分类器/预测器然后集成在一起以提供强大且更精确的模型。它可以处理回归、分类、排序和用户定义的预测问题。

XGBoost 功能
该库专注于计算速度和模型性能,因此几乎没有多余的装饰。
型号特点
支持三种主要形式的梯度提升:

  • 梯度提升
  • 随机梯度提升
  • 正则化梯度提升

系统特点



  • 对于一系列计算环境的使用,该库提供-
  • 树构造的并行化
  • 用于训练超大型模型的分布式计算
  • 缓存优化数据结构和算法

安装步骤
视窗

XGBoost 使用 Git 子模块来管理依赖项。因此,当您克隆 repo 时,请记住指定 –recursive 选项:

git clone --recursive https://github.com/dmlc/xgboost


对于使用github工具的windows用户,可以打开git shell,输入以下命令:
git submodule init
git submodule update

OSX(Mac)
首先,使用 Homebrew (https://brew.sh/) 获取 gcc-8 以启用多线程(即使用多个 CPU 线程进行训练)。默认的 Apple Clang 编译器不支持 OpenMP,因此使用默认编译器会禁用多线程。

brew install gcc@8


然后使用 pip 安装 XGBoost:
pip3 install xgboost


如果遇到权限错误,您可能需要使用 –user 标志运行命令。

代码:XGB 分类器的Python代码

# Write Python3 code here
# Importing the libraries
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
   
# Importing the dataset
dataset = pd.read_csv('Churn_Modelling.csv')
X = dataset.iloc[:, 3:13].values
y = dataset.iloc[:, 13].values
   
# Encoding categorical data
from sklearn.preprocessing import LabelEncoder, OneHotEncoder
labelencoder_X_1 = LabelEncoder()
  
X[:, 1] = labelencoder_X_1.fit_transform(X[:, 1])
labelencoder_X_2 = LabelEncoder()
  
X[:, 2] = labelencoder_X_2.fit_transform(X[:, 2])
onehotencoder = OneHotEncoder(categorical_features = [1])
  
X = onehotencoder.fit_transform(X).toarray()
X = X[:, 1:]
   
# Splitting the dataset into the Training set and Test set
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(
        X, y, test_size = 0.2, random_state = 0)
  
# Fitting XGBoost to the training data
import xgboost as xgb
my_model = xgb.XGBClassifier()
my_model.fit(X_train, y_train)
   
# Predicting the Test set results
y_pred = my_model.predict(X_test)
   
# Making the Confusion Matrix
from sklearn.metrics import confusion_matrix
cm = confusion_matrix(y_test, y_pred)

输出

Accuracy will be about 0.8645