原生形式使用Xgboost(import xgboost as xgb)

  1. from sklearn import datasets
  2. from sklearn.model_selection import train_test_split
  3. import xgboost as xgb
  4. import numpy as np
  5. from sklearn.metrics import precision_score, recall_score
  6. # 加载数据
  7. iris = datasets.load_iris()
  8. X = iris.data
  9. y = iris.target
  10. # 划分训练集和测试集
  11. X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.20, random_state=42)
  12. print("Train data length:", len(X_train))
  13. print("Test data length:", len(X_test))
  14. # 转换为DMatrix数据格式
  15. dtrain = xgb.DMatrix(X_train, label=y_train)
  16. dtest = xgb.DMatrix(X_test, label=y_test)
  17. # 设置参数
  18. parameters = {
  19. 'eta': 0.3,
  20. 'silent': True, # option for logging
  21. 'objective': 'multi:softprob', # error evaluation for multiclass tasks
  22. 'num_class': 3, # number of classes to predic
  23. 'max_depth': 3 # depth of the trees in the boosting process
  24. }
  25. num_round = 20 # the number of training iterations
  26. # 模型训练
  27. bst = xgb.train(parameters, dtrain, num_round)
  28. # 模型预测
  29. preds = bst.predict(dtest)
  30. print(preds[:5])
  31. # 选择表示最高概率的列
  32. best_preds = np.asarray([np.argmax(line) for line in preds])
  33. print(best_preds)
  34. # 模型评估
  35. print(precision_score(y_test, best_preds, average='macro')) # 精准率
  36. print(recall_score(y_test, best_preds, average='macro')) # 召回率

Sklearn接口形式使用Xgboost(from xgboost import XGBClassifier)

  1. from sklearn import datasets
  2. from sklearn.model_selection import train_test_split
  3. from xgboost import XGBClassifier
  4. from sklearn.metrics import precision_score, recall_score
  5. # 加载数据
  6. iris = datasets.load_iris()
  7. X = iris.data
  8. y = iris.target
  9. # 划分训练集和测试集
  10. X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.20, random_state=42)
  11. print("Train data length:", len(X_train))
  12. print("Test data length:", len(X_test))
  13. # 模型训练
  14. model = XGBClassifier(
  15. learning_rate=0.01,
  16. n_estimators=3000,
  17. max_depth=4,
  18. min_child_weight=5,
  19. gamma=0.1,
  20. subsample=0.8,
  21. colsample_bytree=0.8,
  22. reg_alpha=1,
  23. objective='binary:logistic',
  24. nthread=8,
  25. scale_pos_weight=1,
  26. seed=27
  27. )
  28. model.fit(X_train, y_train)
  29. # 预测
  30. y_pred = model.predict(X_test)
  31. # 模型评估
  32. print(precision_score(y_test, y_pred, average='macro')) # 精准率
  33. print(recall_score(y_test, y_pred, average='macro')) # 召回率

Xgboost 两种使用方式的更多相关文章

  1. Web APi之认证(Authentication)两种实现方式【二】(十三)

    前言 上一节我们详细讲解了认证及其基本信息,这一节我们通过两种不同方式来实现认证,并且分析如何合理的利用这两种方式,文中涉及到的基础知识,请参看上一篇文中,就不再叙述废话. 序言 对于所谓的认证说到底 ...

  2. Android中BroadcastReceiver的两种注册方式(静态和动态)详解

    今天我们一起来探讨下安卓中BroadcastReceiver组件以及详细分析下它的两种注册方式. BroadcastReceiver也就是"广播接收者"的意思,顾名思义,它就是用来 ...

  3. Android中Fragment与Activity之间的交互(两种实现方式)

    (未给Fragment的布局设置BackGound) 之前关于Android中Fragment的概念以及创建方式,我专门写了一篇博文<Android中Fragment的两种创建方式>,就如 ...

  4. JavaScript 函数的两种声明方式

    1.函数声明的方式 JavaScript声明函数有两种选择:函数声明法,表达式定义法. 函数声明法 function sum (num1 ,num2){ return num1+num2 } 表达式定 ...

  5. Redis两种持久化方式(RDB&AOF)

    爬虫和转载请注明原文地址;博客园蜗牛:http://www.cnblogs.com/tdws/p/5754706.html Redis所需内存 超过可用内存怎么办 Redis修改数据多线程并发—Red ...

  6. struts2+spring的两种整合方式

    也许有些人会因为学习了struts1,会以为struts2.struts1与spring的整合也是一样的,其实这两者相差甚远.下面就来讲解一下struts2与spring的整合两种方案.(部分转载,里 ...

  7. easyui datagride 两种查询方式

    easyui datagride 两种查询方式function doReseach() { //$('#tt').datagrid('load', { // FixedCompany: $('.c_s ...

  8. 【Visual Lisp】两种出错处理方式

    两种出错处理方式:一种是对出错函数进行重定义,一种是对错误进行捕捉处理. ;;============================================================= ...

  9. 两种include方式及filter中的dispatcher解析

    两种include方式 我自己写了一个original.jsp,另外有一个includedPage.jsp,我想在original.jsp中把includedPage.jsp引进来有两种方式: 1.& ...

随机推荐

  1. string和char*

    string转const char* string s = "hello furong."; const char *c = s.c_str(); string转char* str ...

  2. xshell生成公钥和私钥

    一.打开你的xshell工具,工具栏有一个工具选项,点开选择新建用户密钥生成向导(如下图所示) 二. 点开之后就会如上图所示一样,点击选择下一步,出现如下,再点击下一步 点击完下一步会出现如下图所示 ...

  3. Qemu: User mode emulation and Full system emulation

    转载: https://wiki.edubuntu.org/UbuntuDevelopment/Ports QEMU QEMU is a processor emulator and supports ...

  4. linux 基础7-正则表达式

    1. 基础正规表示法 1.1 以grep获取字符串: 在万用字符*是0-无限个字符,?是一个字符:在正则表达式中是0-无限个字符前一个相同字符..一个前一个相同字符 grep '^[a-z]' gre ...

  5. assert函数应用

    目录 1 assert概念 2 assert作用 3 assert用法 3.1 检测调用者传过来的指针参数是否正常 3.2 判断某个变量的范围 3.3 assert只检验一个地方 3.4 不能使用改变 ...

  6. Nginx 优化详解

    一.一般来说nginx 配置文件中对优化比较有作用的为以下几项: 1. worker_processes 8; nginx 进程数,建议按照cpu 数目来指定,一般为它的倍数 (如,2个四核的cpu计 ...

  7. 关闭Entity Framework的导航属性

    public RIS30Entities() : base("name=RIS30Entities") { this.Configuration.ProxyCreationEnab ...

  8. github下载慢的问题

    1. 修改HOSTS文件:在“C:\Windows\System32\drivers\etc” 下的HOSTS文件,添加以下地址:  151.101.44.249 github.global.ssl. ...

  9. SQL分表

    一.为什么要水平分表?简而言之,当单表数据量过大时,无法对其进行有效的维护,以及查询速度严重变慢时,我们就需要对其时行水平分表. 二.什么时候需要水平分表?在数据库结构的设计中,需要充分考虑后期数据的 ...

  10. Java BIO、NIO、AIO 原理

    先来个例子理解一下概念,以银行取款为例: 同步 : 自己亲自出马持银行卡到银行取钱(使用同步IO时,Java自己处理IO读写). 异步 : 委托一小弟拿银行卡到银行取钱,然后给你(使用异步IO时,Ja ...