xgboost是提升树方法的一种,算法由GBDT改进而来,在计算时也采用并行计算,速度更快。sklearn中提供分类和回归的xgboost模型,本文对二分类问题采用xgboost进行训练。

一、数据准备

  • 正样本:1.5W
  • 负样本:10W
  • 5个特征

2、分训练集和测试集

import pandas as pd
from sklearn.model_selection import train_test_split
df = pd.read_csv('data.csv')
#label
label = df.ix[:,[0]]
features = df.ix[:,[1,2,3,4,5]]
#分训练集测试集
X_train, X_test, y_train, y_test = train_test_split(features, label, test_size=0.2, random_state=3)

二、训练模型

import matplotlib.pyplot as plt
from sklearn import datasets
from sklearn.metrics import accuracy_score
from xgboost import XGBClassifier
from xgboost import plot_importance
from sklearn import metrics
model = XGBClassifier(learning_rate=0.01,
                      n_estimators=10,           # 树的个数-10棵树建立xgboost
                      max_depth=4,               # 树的深度
                      min_child_weight = 1,      # 叶子节点最小权重
                      gamma=0.,                  # 惩罚项中叶子结点个数前的参数
                      subsample=1,               # 所有样本建立决策树
                      colsample_btree=1,         # 所有特征建立决策树
                      scale_pos_weight=1,        # 解决样本个数不平衡的问题
                      random_state=27,           # 随机数
                      slient = 0
model.fit(X_train,
          y_train)
y_test, y_pred = y_test, model .predict (X_test) print( "Accuracy : %.4g" % metrics .accuracy _score(y_test, y_pred)) y_train_proba = model .predict _proba(X_train)[:, 1 ] print( "AUC Score (Train): %f" % metrics .roc _auc_score(y_train, y_train_proba)) y_proba = model .predict _proba(X_test)[:, 1 ] print( "AUC Score (Test): %f" % metrics .roc _auc_score(y_test, y_proba)) xgboost是提升树方法的一种,算法由GBDT改进而来,在计算时也采用并行计算,速度更快。sklearn中提供分类和回归的xgboost模型,本文对二分类问题采用xgboost进行训练。一、数据准备1、样本正样本:1.5W负样本:10W5个特征2、分训练集和测试集import pandas as pdfrom sklearn.model_selection im...
一、概述如果你的预测 模型 表现得有些不尽如人意,那就用 XGBoost 吧。 XGBoost 算法现在已经成为很多数据工程师的重要武器。它是一种十分精致的算法,可以处理各种不规则的数据。 构造一个 使用 XGBoost 模型 十分简单。但是,提高这个 模型 的表现就有些困难(至少我觉得十分纠结)。这个算法 使用 了好几个参数。所以为了提高 模型 的表现,参数的调整十分必要。在解决实际问题的时候,有些问题是很难回答的——你需要
from sklearn .datasets import load_svmlight_file X_train,y_train = load_svmlight_file(libsvm文件) 使用 pandas读取完数据后在转化为标准形式 2. 模型 训练 过程 1.未调参基线 模型 使用 xgboost 原生库进行 训练 import xgboost as xgb from skl
这篇应该是你见过的讲 xgboost 的文章里最细的。 首先需要介绍GBDT,它是一种基于boosting增强策略的加法 模型 训练 的时候采用前向分布算法进行贪婪的学习,每次迭代都学习一棵CART树来拟合之前 t-1 棵树的预测结果与 训练 样本真实值的残差。 在核心思想不变的情况下, XGBoost 对GBDT进行了一系列优化,主要是损失函数进行了二阶泰勒展开,另外还有目标函数加入正则项、支持并行和...
以回归任务为例,首先导入包 from xgboost import XGBRegressor as XGBR # Implementation of the scikit-learn API for XGBoost regression n_estimators: 通过画出n_estimator的学习曲线,这里得出几个重要的结论: 首先,XGB中的树的数量决定了 模型 的学习能力,树的数量越多, 模型 的学习能力越强。只要XGB中树的数量足够了,即便只有很少的数据, 模型 也能够学到 训练 数据100%的信息,所以X
1.什么是 XGBoost ?   GBDT,它是一种基于boosting增强策略的加法 模型 训练 的时候采用前向分布算法进行贪婪的学习,每次迭代都学习一棵CART树来拟合之前 t−1t-1t−1 棵树的预测结果与 训练 样本真实值的残差。 XGBoost 对GBDT进行了一系列优化,比如损失函数进行了二阶泰勒展开、目标函数加入正则项、支持并行和默认缺失值处理等,在可扩展性和 训练 速度上有了巨大的提升,但其核心思想没有大的变化。 2. XGBoost 的核心原理 2.1 如何构造目标函数?   对于一个给定有 nnn 个样本和
xgboost 是一种集成分类器(弱分类器), xgboost 是基于提升树的。提升树:简单说,就是一个 模型 表现不好,我继续按照原来 模型 表现不好的那部分 训练 第二个 模型 ,依次类推。形象的比喻就是: 做题的时候,第一个人做一遍得到一个分数,第二个人去做第一个人做错的题目,第三个人去做第二个人做错的题目,以此类推,不停的去拟合从而可以使整张试卷分数可以得到100分(极端情况)。把这个比喻替换到 模型 来说,就是真实值为100,第一个 模型 预测为90,差10分,第二个 模型 以10为目标值去 训练 并预测,预测值为7,差三分,第三个
在实际业务中, XGBoost 经常被运用于用户行为预判、用户标签预测、用户信用评分等项目中。 XGBoost 是对梯度提升算法的改进,求解损失函数极值时 使用 了牛顿法,将损失函数泰勒展开到二阶,另外损失函数中加入了正则化项。 1.集成学习 集成学习(ensemble learning)可以说是现在非常火爆的机器学习方法了。它本身不是一个单.
一. Xgboost 简介 1. Xgboost 是大规模并行boosted tree的工具,它是目前最快最好的开源boosted tree工具包之一,比常见的工具包快10倍以上,他是GB方法里的完全加强版本,也是基于残差优化的算法,希望建立K个回归树,使得树群的预测值尽量接近真实值(准确率)而且有尽量大的泛化能力。 2. Xgboost 相对于GBDT的优点:         (1)传统GBDT以CA...
sklearn 中也集成了 XGBoost 模型 使用 起来比较简单。下面是一个 使用 sklearn XGBoost 进行分类的Python代码示例: ```python import xgboost as xgb from sklearn .datasets import load_breast_cancer from sklearn .model_selection import train_test_split from sklearn .metrics import accuracy_score # 加载数据集 data = load_breast_cancer() X, y = data.data, data.target # 划分 训练 集和测试集 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) # 定义 模型 参数 params = {'objective': 'binary:logistic', 'eval_metric': 'logloss'} # 训练 模型 num_rounds = 100 dtrain = xgb.DMatrix(X_train, label=y_train) bst = xgb.train(params, dtrain, num_rounds) # 进行预测 dtest = xgb.DMatrix(X_test) preds = bst.predict(dtest) # 输出预测结果 predictions = [round(value) for value in preds] accuracy = accuracy_score(y_test, predictions) print("Accuracy: %.2f%%" % (accuracy * 100.0)) 解释一下代码: 1. 首先导入 XGBoost 库、 sklearn 库中的load_breast_cancer、train_test_split和accuracy_score函数。 2. 使用 load_breast_cancer函数加载乳腺癌数据集,这是一个二分类问题。 3. 使用 train_test_split函数将数据集划分为 训练 集和测试集,其中测试集占比为20%。 4. 定义 模型 参数,这里 使用 了二分类任务的目标函数和评估指标。 5. 使用 训练 数据和 模型 参数 训练 模型 ,其中将 训练 数据和标签转换为DMatrix格式。 6. 准备测试数据,这里 使用 测试集数据进行预测,同样需要将测试数据转换为DMatrix格式。 7. 使用 训练 好的 模型 对测试数据进行预测。 8. 输出预测结果,并 使用 accuracy_score函数计算 模型 的准确率,以评估 模型 的预测效果。 需要注意的是, sklearn 中的 XGBoost 使用 方法与原生的 XGBoost 库略有不同,但是由于 使用 sklearn 的接口,因此在 使用 过程中可以充分利用 sklearn 的其他功能,比如GridSearchCV进行参数调优等。