安装

能直接安装就再好不过

pip install xgboost

如果不能就下载之后本地安装

安装包下载地址 这里 想要啥包都有

数据集

pima-indians-diabetes.csv 文件

调查印度糖尿病人的一些数据,  最终的预测结果是是否患病

# 1. Number of times pregnant
# 2. Plasma glucose concentration a 2 hours in an oral glucose tolerance test
# 3. Diastolic blood pressure (mm Hg)
# 4. Triceps skin fold thickness (mm)
# 5. 2-Hour serum insulin (mu U/ml)
# 6. Body mass index (weight in kg/(height in m)^2)
# 7. Diabetes pedigree function
# 8. Age (years)
# 9. Class variable (0 or 1)

共有 8 个特征变量, 以及 1 个分类标签

Xgboost 使用

基础使用框架

from numpy import loadtxt
from xgboost import XGBClassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score # 下载数据集
datasets = loadtxt('pima-indians-diabetes.csv', delimiter=',') # 切分 特征 标签
X = datasets[:,0:8]
Y = datasets[:,8] # 切分 训练集 测试集
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) # 模型创建 训练
model = XGBClassifier()
model.fit(X_train, y_train) # 预测模型
y_pred = model.predict(X_test)
predictions = [round(i) for i in y_pred] # 精度计算
accuracy = accuracy_score(y_test, predictions)
print("Accuracy: %.2f%%" %(accuracy * 100) )
Accuracy: 77.95%

中间过程展示

Xgboost 的原理是在上一棵树的基础上通过添加树从而实现模型的提升的

如果希望看到中间的升级过程可以进行如下的操作

from numpy import loadtxt
from xgboost import XGBClassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score # 下载数据集
datasets = loadtxt('pima-indians-diabetes.csv', delimiter=',') # 切分 特征 标签
X = datasets[:,0:8]
Y = datasets[:,8] # 切分 训练集 测试集
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) # 模型创建 训练
model = XGBClassifier()
eval_set = [(X_test, y_test)]
model.fit(X_train, y_train, # 传入的训练数据
early_stopping_rounds=10, # 当多少次的 lost值不在下降就停止模型
eval_metric='logloss', # lost 评估标准
eval_set=eval_set, # 构造一个测试集, 没加入一个就进行一次测试
verbose=True # 是否展示出中间的详细数据打印
) # 预测模型
y_pred = model.predict(X_test)
predictions = [round(i) for i in y_pred] # 精度计算
accuracy = accuracy_score(y_test, predictions)
print("Accuracy: %.2f%%" %(accuracy * 100) )

打印的过程中会体现出 lost 值的变化过程

[0]    validation_0-logloss:0.660186
Will train until validation_0-logloss hasn't improved in 10 rounds.
[1] validation_0-logloss:0.634854
[2] validation_0-logloss:0.61224
[3] validation_0-logloss:0.593118
[4] validation_0-logloss:0.578303
[5] validation_0-logloss:0.564942
[6] validation_0-logloss:0.555113
[7] validation_0-logloss:0.54499
[8] validation_0-logloss:0.539151
[9] validation_0-logloss:0.531819
[10] validation_0-logloss:0.526065
[11] validation_0-logloss:0.519769
[12] validation_0-logloss:0.514979
[13] validation_0-logloss:0.50927
[14] validation_0-logloss:0.506086
[15] validation_0-logloss:0.503565
[16] validation_0-logloss:0.503591
[17] validation_0-logloss:0.500805
[18] validation_0-logloss:0.497605
[19] validation_0-logloss:0.495328
[20] validation_0-logloss:0.494777
[21] validation_0-logloss:0.494274
[22] validation_0-logloss:0.493333
[23] validation_0-logloss:0.492211
[24] validation_0-logloss:0.491936
[25] validation_0-logloss:0.490578
[26] validation_0-logloss:0.490895
[27] validation_0-logloss:0.490646
[28] validation_0-logloss:0.491911
[29] validation_0-logloss:0.491407
[30] validation_0-logloss:0.488828
[31] validation_0-logloss:0.487867
[32] validation_0-logloss:0.487297
[33] validation_0-logloss:0.487562
[34] validation_0-logloss:0.487789
[35] validation_0-logloss:0.487962
[36] validation_0-logloss:0.488218
[37] validation_0-logloss:0.489582
[38] validation_0-logloss:0.489334
[39] validation_0-logloss:0.490968
[40] validation_0-logloss:0.48978
[41] validation_0-logloss:0.490704
[42] validation_0-logloss:0.492369
Stopping. Best iteration:
[32] validation_0-logloss:0.487297 Accuracy: 77.56%

详细打印

特征重要性展示

from numpy import loadtxt
from xgboost import XGBClassifier
from xgboost import plot_importance
from matplotlib import pyplot # 下载数据集
datasets = loadtxt('pima-indians-diabetes.csv', delimiter=',') # 切分 特征 标签
X = datasets[:,0:8]
Y = datasets[:,8] # 模型创建 训练
model = XGBClassifier()
model.fit(X, Y) # 展示特征重要程度
plot_importance(model)
pyplot.show()

参数调节

Xgboost 有很多的参数可以调节

常见参数

学习率 

learning rate  一般设置在  0.1 以下

tree 相关参数

max_depth  最大深度

min_child_weight  最小叶子权重

subsample  随机选择比例

colsample_bytree  速记特征比例

gamma  损失率相关的一个参数

正则化参数

lambda

alpha

其他参数示例

更详细的的参数可以参考官方文档

xgb1 = XGBClassifier(
learning_rate= 0.1,
n_estimators=1000,
max_depth=5,
min_child_weight=1,
gamma=0,
subsample=0.8,
colsample_bytree=0.8,
objective='binary:logistic', # 指定出是用什么损失函数, 一阶导还是二阶导
nthread=4, #
scale_pos_weight=1,
seed=27 # 随机种子
)

参数选择示例

from numpy import loadtxt
from xgboost import XGBClassifier
from sklearn.model_selection import GridSearchCV
from sklearn.model_selection import StratifiedKFold # 下载数据集
datasets = loadtxt('pima-indians-diabetes.csv', delimiter=',') # 切分 特征 标签
X = datasets[:,0:8]
Y = datasets[:,8] # 模型创建 训练
model = XGBClassifier() # 学习率备选数据
learning_rate = [0.0001, 0.001, 0.01, 0.1, 0.2, 0.3]
param_grid = dict(learning_rate=learning_rate) # 格式要求转换为字典格式 # 交叉验证
kfold = StratifiedKFold(n_splits=10, shuffle=True, random_state=7) # 训练模型最佳学习率选择
grid_serarch = GridSearchCV(model,
param_grid,
scoring='neg_log_loss',
n_jobs=-1, # 当前所有 cpu 都跑这个事
cv=kfold)
grid_serarch = grid_serarch.fit(X, Y) # 打印结果
print("Best: %f using %s" % (grid_serarch.best_score_, grid_serarch.best_params_))
means = grid_serarch.cv_results_['mean_test_score']
params = grid_serarch.cv_results_['params'] for mean, param in zip(means, params):
print("%f with: %r" % (mean, param))

打印结果

Best: -0.483304 using {'learning_rate': 0.1}
-0.689811 with: {'learning_rate': 0.0001}
-0.661827 with: {'learning_rate': 0.001}
-0.531155 with: {'learning_rate': 0.01}
-0.483304 with: {'learning_rate': 0.1}
-0.515642 with: {'learning_rate': 0.2}
-0.554158 with: {'learning_rate': 0.3}

机器学习 - 算法示例 - Xgboost的更多相关文章

  1. 机器学习算法总结(四)——GBDT与XGBOOST

    Boosting方法实际上是采用加法模型与前向分布算法.在上一篇提到的Adaboost算法也可以用加法模型和前向分布算法来表示.以决策树为基学习器的提升方法称为提升树(Boosting Tree).对 ...

  2. 机器学习算法中GBDT和XGBOOST的区别有哪些

    首先xgboost是Gradient Boosting的一种高效系统实现,并不是一种单一算法.xgboost里面的基学习器除了用tree(gbtree),也可用线性分类器(gblinear).而GBD ...

  3. AI技术原理|机器学习算法

    摘要 机器学习算法分类:监督学习.半监督学习.无监督学习.强化学习 基本的机器学习算法:线性回归.支持向量机(SVM).最近邻居(KNN).逻辑回归.决策树.k平均.随机森林.朴素贝叶斯.降维.梯度增 ...

  4. 建模分析之机器学习算法(附python&R代码)

    0序 随着移动互联和大数据的拓展越发觉得算法以及模型在设计和开发中的重要性.不管是现在接触比较多的安全产品还是大互联网公司经常提到的人工智能产品(甚至人类2045的的智能拐点时代).都基于算法及建模来 ...

  5. Python实现的各种机器学习算法

    七种算法包括: 线性回归算法 Logistic 回归算法 感知器 K 最近邻算法 K 均值聚类算法 含单隐层的神经网络 多项式的 Logistic 回归算法 01 线性回归算法 在线性回归中,我们想要 ...

  6. 机器学习算法中的准确率(Precision)、召回率(Recall)、F值(F-Measure)

    摘要: 数据挖掘.机器学习和推荐系统中的评测指标—准确率(Precision).召回率(Recall).F值(F-Measure)简介. 引言: 在机器学习.数据挖掘.推荐系统完成建模之后,需要对模型 ...

  7. 10 种机器学习算法的要点(附 Python 和 R 代码)

    本文由 伯乐在线 - Agatha 翻译,唐尤华 校稿.未经许可,禁止转载!英文出处:SUNIL RAY.欢迎加入翻译组. 前言 谷歌董事长施密特曾说过:虽然谷歌的无人驾驶汽车和机器人受到了许多媒体关 ...

  8. 机器学习算法--GBDT

    转自 http://blog.csdn.net/u014568921/article/details/49383379 另外一个很容易理解的文章 :http://www.jianshu.com/p/0 ...

  9. 机器学习算法( 五、Logistic回归算法)

    一.概述 这会是激动人心的一章,因为我们将首次接触到最优化算法.仔细想想就会发现,其实我们日常生活中遇到过很多最优化问题,比如如何在最短时间内从A点到达B点?如何投入最少工作量却获得最大的效益?如何设 ...

随机推荐

  1. Nginx服务rewrite模块功能说明 网站自动跳转功能

    实现域名地址信息跳转,用于做伪静态地址 www.impkk.com/oldboy?edu.html 动态地址 www.impkk.com/oldboy-edu.html 伪静态地址 rewrite ^ ...

  2. 数组中的reduce

    reduce方法第一次对我的感觉是很鸡肋,但是深入了解,才发现其中的奥妙,是个非常强大且实用的方法 var arr = [1,2,3,4,5,6,7]; var sum = arr.reduce( ( ...

  3. python练习题(一)

    背景: 和公司的二位同事一起学习python,本着共同学习.共同成长.资源共享的目标,然后从中学习,三人行必有我师 练习题更新中······ 题目: 输入一个值num,如果 num 大于 10,输出: ...

  4. test20181102 空间复杂度 和 test20181030 数独

    空间复杂度 考场做法 前有时间复杂度,后有空间复杂度. 但是这题不会有CE情况,所以较为好写. 就用map存复杂度,单层循环就搞定了. 至于判断维度的方法,我是用快读从字符串中读入. 然后不管常数,把 ...

  5. 文件读写(二)利用SteamReader和StreamWrite类处理字符串、FileSystemWatcher、BinaryReader/BinaryWriter

    一.读写类: TextReader/TextWriter:文本读写,抽象类 TextReader,其派生类: StreamReader:以一种特定的编码从字节流中读取字符. StringReader: ...

  6. postgresql sql查询结果添加序号列与每组第一个序号应用

    1.postgresql 查询每组第一个 ROW_NUMBER () OVER (partition by 字段 ORDER BY  字段  DESC) 写法:SELECT  ROW_NUMBER ( ...

  7. 07_gitee源码参考

    Django REST framework Tutorial 教程 码云:https://gitee.com/venicid/tutorial-api

  8. linux文件共享服务

    linux文件共享配置 Windows访问linux 以下操作都在关闭防火墙和关闭selinux的环境下. 关闭防火墙的命令:service iptables stop关闭SELINUX命令:sete ...

  9. Linux 硬件软件时间同步

    同步BIOS时钟,强制把系统时间写入CMOS clock --show   查看硬件时间clock -w       强制把系统时间写入CMOSclock --show   查看硬件时间reboot ...

  10. iwap:修改菜单树文件

    1.添加mysql数据库连接的jar包. 2.