机器学习——XGBoost实践

机器学习算法进阶学习笔记——xgboost实践 机器学习算法进阶学习笔记——xgboost实践泰坦尼克号生存预测 泰坦尼克号生存预测 首先切换到python2.7,然后在运行 # /usr/bin/python # -*- encoding:utf-8 -*- import xgboost as xgb import numpy as np from sklearn.linear_model import LogisticRegression from sklearn.model_selection import train_test_split fr 阅读详情

XGBoost:
XGBoost是大规模并行boosted tree的工具,它是目前最快最好的开源boosted tree工具包,比常见的工具包快10倍以上。在数据科学方面,有大量kaggle选手选用它进行数据挖掘比赛,其中包括两个以上kaggle比赛的夺冠方案。在工业界规模方面,xgboost的分布式版本有广泛的可移植性,支持在YARN, MPI, Sungrid Engine等各个平台上面运行,并且保留了单机并行版本的各种优化,使得它可以很好地解决于工业界规模的问题。

基本原理实践:

import xgboost as xgb
import numpy as np

# 1、xgBoost的基本使用
# 2、自定义损失函数的梯度和二阶导
# 3、binary:logistic/logitraw


# 定义f: theta * x
def log_reg(y_hat, y):
    p = 1.0 / (1.0 + np.exp(-y_hat))
    g = p - y.get_label()
    h = p * (1.0-p)
    return g, h


def error_rate(y_hat, y):
    return 'error', float(sum(y.get_label() != (y_hat > 0.5))) / len(y_hat)


if __name__ == "__main__":
    # 读取数据
    data_train = xgb.DMatrix('agaricus_train.txt')
    data_test = xgb.DMatrix('agaricus_test.txt')
    print data_train
    print type(data_train)

    # 设置参数
    param = {'max_depth': 3, 'eta': 1, 'silent': 1, 'objective': 'binary:logistic'} # logitraw
    # param = {'max_depth': 3, 'eta': 0.3, 'silent': 1, 'objective': 'reg:logistic'}
    watchlist = [(data_test, 'eval'), (data_train, 'train')]
    n_round = 7
    # bst = xgb.train(param, data_train, num_boost_round=n_round, evals=watchlist)
    bst = xgb.train(param, data_train, num_boost_round=n_round, evals=watchlist, obj=log_reg, feval=error_rate)

    # 计算错误率
    y_hat = bst.predict(data_test)
    y = data_test.get_label()
    print y_hat
    print y
    error = sum(y != (y_hat > 0.5))
    error_rate = float(error) / len(y_hat)
    print '样本总数:\t', len(y_hat)
    print '错误数目:\t%4d' % error
    print '错误率:\t%.5f%%' % (100*error_rate)

泰坦尼克号人员生存预测实践:

import xgboost as xgb
import numpy as np
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestRegressor
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score
import pandas as pd
import csv


def show_accuracy(a, b, tip):
    acc = a.ravel() == b.ravel()
    acc_rate = 100 * float(acc.sum()) / a.size
    print '%s正确率:%.3f%%' % (tip, acc_rate)
    return acc_rate


def load_data(file_name, is_train):
    data = pd.read_csv(file_name)  # 数据文件路径
    # print 'data.describe() = \n', data.describe()

    # 性别
    data['Sex'] = data['Sex'].map({'female': 0, 'male': 1}).astype(int)

    # 补齐船票价格缺失值
    if len(data.Fare[data.Fare.isnull()]) > 0:
        fare = np.zeros(3)
        for f in range(0, 3):
            fare[f] = data[data.Pclass == f + 1]['Fare'].dropna().median()
        for f in range(0, 3):  # loop 0 to 2
            data.loc[(data.Fare.isnull()) & (data.Pclass == f + 1), 'Fare'] = fare[f]

    # 年龄:使用均值代替缺失值
    # mean_age = data['Age'].dropna().mean()
    # data.loc[(data.Age.isnull()), 'Age'] = mean_age
    if is_train:
        # 年龄:使用随机森林预测年龄缺失值
        print '随机森林预测缺失年龄:--start--'
        data_for_age = data[['Age', 'Survived', 'Fare', 'Parch', 'SibSp', 'Pclass']]
        age_exist = data_for_age.loc[(data.Age.notnull())]   # 年龄不缺失的数据
        age_null = data_for_age.loc[(data.Age.isnull())]
        # print age_exist
        x = age_exist.values[:, 1:]
        y = age_exist.values[:, 0]
        rfr = RandomForestRegressor(n_estimators=1000)
        rfr.fit(x, y)
        age_hat = rfr.predict(age_null.values[:, 1:])
        # print age_hat
        data.loc[(data.Age.isnull()), 'Age'] = age_hat
        print '随机森林预测缺失年龄:--over--'
    else:
        print '随机森林预测缺失年龄2:--start--'
        data_for_age = data[['Age', 'Fare', 'Parch', 'SibSp', 'Pclass']]
        age_exist = data_for_age.loc[(data.Age.notnull())]  # 年龄不缺失的数据
        age_null = data_for_age.loc[(data.Age.isnull())]
        # print age_exist
        x = age_exist.values[:, 1:]
        y = age_exist.values[:, 0]
        rfr = RandomForestRegressor(n_estimators=1000)
        rfr.fit(x, y)
        age_hat = rfr.predict(age_null.values[:, 1:])
        # print age_hat
        data.loc[(data.Age.isnull()), 'Age'] = age_hat
        print '随机森林预测缺失年龄2:--over--'

    # 起始城市
    data.loc[(data.Embarked.isnull()), 'Embarked'] = 'S'  # 保留缺失出发城市
    # data['Embarked'] = data['Embarked'].map({'S': 0, 'C': 1, 'Q': 2, 'U': 0}).astype(int)
    # print data['Embarked']
    embarked_data = pd.get_dummies(data.Embarked)
    print embarked_data
    # embarked_data = embarked_data.rename(columns={'S': 'Southampton', 'C': 'Cherbourg', 'Q': 'Queenstown', 'U': 'UnknownCity'})
    embarked_data = embarked_data.rename(columns=lambda x: 'Embarked_' + str(x))
    data = pd.concat([data, embarked_data], axis=1)
    print data.describe()
    data.to_csv('New_Data.csv')

    x = data[['Pclass', 'Sex', 'Age', 'SibSp', 'Parch', 'Fare', 'Embarked_C', 'Embarked_Q', 'Embarked_S']]
    # x = data[['Pclass', 'Sex', 'Age', 'SibSp', 'Parch', 'Fare', 'Embarked']]
    y = None
    if 'Survived' in data:
        y = data['Survived']

    x = np.array(x)
    y = np.array(y)

    # 思考:这样做,其实发生了什么?
    x = np.tile(x, (5, 1))
    y = np.tile(y, (5, ))
    if is_train:
        return x, y
    return x, data['PassengerId']


def write_result(c, c_type):
    file_name = 'Titanic.test.csv'
    x, passenger_id = load_data(file_name, False)

    if type == 3:
        x = xgb.DMatrix(x)
    y = c.predict(x)
    y[y > 0.5] = 1
    y[~(y > 0.5)] = 0

    predictions_file = open("Prediction_%d.csv" % c_type, "wb")
    open_file_object = csv.writer(predictions_file)
    open_file_object.writerow(["PassengerId", "Survived"])
    open_file_object.writerows(zip(passenger_id, y))
    predictions_file.close()


if __name__ == "__main__":
    x, y = load_data('Titanic.train.csv', True)
    x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.25, random_state=1)
    #
    lr = LogisticRegression(penalty='l2')
    lr.fit(x_train, y_train)
    y_hat = lr.predict(x_test)
    lr_acc = accuracy_score(y_test, y_hat)
    # write_result(lr, 1)

    rfc = RandomForestClassifier(n_estimators=100)
    rfc.fit(x_train, y_train)
    y_hat = rfc.predict(x_test)
    rfc_acc = accuracy_score(y_test, y_hat)
    # write_result(rfc, 2)

    # XGBoost
    data_train = xgb.DMatrix(x_train, label=y_train)
    data_test = xgb.DMatrix(x_test, label=y_test)
    watch_list = [(data_test, 'eval'), (data_train, 'train')]
    param = {'max_depth': 6, 'eta': 0.8, 'silent': 1, 'objective': 'binary:logistic'}
             # 'subsample': 1, 'alpha': 0, 'lambda': 0, 'min_child_weight': 1}
    bst = xgb.train(param, data_train, num_boost_round=100, evals=watch_list)
    y_hat = bst.predict(data_test)
    # write_result(bst, 3)
    y_hat[y_hat > 0.5] = 1
    y_hat[~(y_hat > 0.5)] = 0
    xgb_acc = accuracy_score(y_test, y_hat)

    print 'Logistic回归:%.3f%%' % lr_acc
    print '随机森林:%.3f%%' % rfc_acc
    print 'XGBoost:%.3f%%' % xgb_acc

机器学习基础算法25-XGBoost实践 目录1.XGBoost简介2.Kaggle简介3.数据预处理-清洗4.案例部分1)判断蘑菇是否有毒-二分类2)判断蘑菇是否有毒-手动读取数据3)鸢尾花数据集-多分类4)葡萄酒分类-多分类5)泰坦尼克号-数据处理麻烦6)AdaBoost实践 1.XGBoost简介 2.Kaggle简介 Kaggle是一个数据分析的竞赛平台,网址为:https://www.kaggle.com/ 3.数据预处理-清洗 特征:重要性高,缺失率低 策略:通过计算进行补充;通过经验或业务知识估计 特征:重要性高,缺失率高 策略:尝 阅读详情

相关推荐

一文速学-XGBoost模型算法原理以及实现+贷款违约预测模型Python项目实战

集成模型Boosting补完计划第三期了,之前我们已经详细描述了AdaBoost算法模型和GBDT原理以及实践。通过这两类算法就可以明白Boosting算法的核心思想以及基本的运行计算框架,余下几种Boosting算法都是在前者的算法之上改良得到,尤其是以GBDT算法为基础改进衍生出的三种Boosting算法:XGBoost、LightGBM、CatBoost。大家应该都对XGBoost算法模型熟悉但是对GBDT模型一无所知,看过之前GBDT的读者应该对GBDT模型有了一个很清楚的认知,对于理解XGBoos

master_hunter的博客 1万+

XGBoost算法原理与实战

XGBoost全名叫做eXtreme Gradient Boosting,是一种基于GBDT的高效、灵活、可扩展的梯度提升算法。近年来,在各种数据科学竞赛中,XGBoost屡创佳绩,成为众多数据科学家和算法工程师的新宠。本文将从原理和实战两个方面,带领大家深入了解XGBoost。

Cyrus_May的博客 1133

使用XGBoost算法进行机器学习任务:从理论到实践

XGBoost是一种基于决策树的集成学习算法,它通过逐步添加树模型来优化目标函数。XGBoost的核心思想是通过梯度提升(Gradient Boosting)来构建一个强大的模型。正则化:XGBoost在目标函数中加入了正则化项,以防止过拟合。并行处理:XGBoost支持并行计算,充分利用多核CPU和GPU资源。缺失值处理:XGBoost能够自动处理缺失值,无需额外预处理。灵活性:XGBoost支持自定义损失函数和评估指标。

闲人编程的博客 675

机器学习:xgboost原理及实践

文章目录xgboost原理及实践 xgboost原理及实践

USTB_YYX的博客 2082

Python3机器学习实践:集成学习之XGBoost

一、XGBoost目标函数 首先认清一点,它是GBDT的升级版,由陈天奇发明,在效率、方法方面都进行了优化。 不管对于回归问题还是分类问题,好的机器学习方法的目的就是降低目标函数(也可称为损失函数)的值,目标函数包括2个部分:一是模型的损失函数,二是模型的复杂度。也就是目标函数具有下面的形式: 上面公式中,前者表示模型的损失函数的值,降低它是为了降低偏差,也就是使得预测的数据和真实的数据更为接近...

AnFany 550

弹簧管压力表设计报告

精密机械课程设计 弹簧管压力表设计报告 2020年5月1日 目 录 第一章 设计任务概述... 3 1.1 课程设计目的... 3 1.2 设计任务... 3 1.3 技术指标... 3 第二章 压力表概述... 4 2.1 机械式压力表的组成部分... 4 2.2 工作原理... 4 第三章 压力表设计... 5 3.1 弹簧管参数设计... 5 3.2 曲柄滑块机构设计... ...

weixin_42163746的博客 6452

机器学习(二)--->朴素贝叶斯(Naive Bayes)

一、实验室介绍1.XGBoost的介绍2.XGBoost的应用二、实验室手册二、使用步骤1.引入库2.读入数据总结 一、实验室介绍 1.XGBoost的介绍 XGBoost是2016年由华盛顿大学陈天奇老师带领开发的一个可扩展机器学习系统。严格意义上讲XGBoost并不是一种模型,而是一个可供用户轻松解决分类、回归或排序问题的软件包。它内部实现了梯度提升树(GBDT)模型,并对模型中的算法进行了诸多优化,在取得高精度的同时又保持了极快的速度,在一段时间内成为了国内外数据挖掘、机器学习领域中的大规模杀伤性武.

胜东灬逆风微笑的博客 4590

【论文阅读】2021-(Pidinet)Pixel Difference Networks for Efficient Edge Detection

文章目录摘要1. Introduction 摘要 motivations: 基于CNN的边缘检测的高性能是通过一个大的预训练CNN主干来实现的,该主干占用大量内存和能量。传统边缘检测器(如Canny、Sobel和LBP)很少被研究。 contributions: 提出了一种简单、轻量级但有效的架构,称为像素差分网络(PiDiNet),用于有效的边缘检测。PiDiNet采用了新颖的像素差卷积,将传统的边缘检测算子集成到现代CNN中流行的卷积运算中,以增强任务性能。 experiments: 在BSDS500

轻舟的万重重山 1万+

一天一个机器学习算法——XGBoost原理及实践

逆光mlz 272

【5G】5G 核心网(5GC)基本架构

本文旨在科普5G核心网相关知识...

Learning makes me happy (0^◇^0) 4万+

机器学习第五章之决策树模型

机器学习专题系列

wangyutao12345的博客 5187

Xorbits+XGBoost:大规模机器学习训练的最佳实践

Xorbits是一个可扩展的Python数据科学与机器学习框架,能以API兼容且闪电般快速的方式处理大规模数据。当Xorbits与XGBoost结合时,为大规模机器学习训练提供了强大的解决方案,让用户能够轻松应对海量数据和复杂模型的训练任务。 ## 为什么选择Xorbits与XGBoost结合? 在当今数据驱动的时代,大规模机器学习训练面临着数据量大、计算资源需求高、训练时间长等挑战。Xorb

gitblog_00889的博客 978

批量读取_MCGS触摸屏如何实现批量读取modbus数据的方法?

前两天,在一个QQ群里,有同行的朋友问,在MCGS中如何实现批量读取数据,因为他当时面临设备,通讯协议才是MODBUS RTU,同时厂家说地址不能分开读,必须是连续的。鉴于他提供的消息是能够设置的地方都试过了。为此,我直接告诉通过脚本,批量读取的方案。那么这个方案究竟如何实现?且看我下面慢慢道来。一、工具1.modsim:仿真PLC或者第三方设备。2.MCGS组态软件3.串口软件:在电脑中生成两不...

weixin_32511509的博客 8161

机器学习实践:基于XGBoost的分类方法

文章目录序言原理例子引入目标函数树的生成代码实践总结参考文献 序言 XGBoost是陈天奇等人开发的一个开源机器学习项目,高效地实现了GBDT算法并进行了算法和工程上的许多改进,被广泛应用在Kaggle竞赛及其他许多机器学习竞赛中,并取得了不错的成绩。 XGBoost本质上是一个GBDT(Gradient Boosting Decision Tree,梯度提升决策树),GBDT使用了Boosting的思想,其基本原理是所有弱分类器的结果相加等于预测值,然后下一个弱分类器去拟合上一个预测的残差(这个残差就是预

weixin_42278156的博客 4588

UE5 Niagara基础知识讲解

在UE5版本中,Niagara粒子系统引入了许多可添加的模块,分别用于控制发射器的生成和更新、粒子的生成和更新以及渲染效果。本文采用虚幻5.2.1版本,以图文方式对Niagara基础知识进行讲解。

一碗清深的博客 2472

【docker】第10篇 Failed with result ‘exit-code和Start request repeated too quickly和Failed to start Docker

【docker】解决 Failed with result 'exit-code'和Start request repeated too quickly和Failed to start Docker。

Fanjufei的博客 6821

机器学习基础算法23-XGBoost实践

文章目录1.XGBoost简介2.Kaggle简介3.数据预处理-清洗4.案例部分1)判断蘑菇是否有毒-二分类2) 1.XGBoost简介 2.Kaggle简介 Kaggle是一个数据分析的竞赛平台,网址为:https://www.kaggle.com/ 3.数据预处理-清洗 特征:重要性高,缺失率低 策略:通过计算进行补充;通过经验或业务知识估计 特征:重要性高,缺失率高 策略:尝试从其他渠道取书补全;使用其他字段通过数字获取;去除字段,并在字段中标明 特征:重要性低,缺失率低 策略:不做处理或简单填充

柳杰的博客 535

摆脱英文束缚!群晖Transmission4.0.4全新中文界面攻略

在群晖安装完官方Transmission4.0.4套件后,界面是英文状态的,不太好用。但是按照网上分享的原来4.0以前版本的方法更新UI又失败,所以自己搞了下成功了,分享给需要的朋友。

XiaoqiangClub的博客 5220

30天数据分析与机器学习实践之Day20——Xgboost集成算法

机器学习中的算法-Xgboost算法

qq_45817449的博客 270

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

【ML】深入解析XGBoost:从理论到实践的高效梯度提升

本文深入解析了XGBoost(极限梯度提升算法)的核心原理与工程实践。文章从目标函数、加法训练机制入手,详细拆解了其防止过拟合的正则化策略与高效的二阶泰勒展开优化方法,并阐述了其在处理缺失值、并行计算等方面的工程优化。最后,通过实战代码示例,提供了关键的参数调优指南与模型评估方法,帮助读者从理论到实践全面掌握这一高效的机器学习工具。

cnn8visionary的博客 597

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

xgboost参数_机器学习算法XGBoost原理和实践(下)

小编之前在机器学习算法XGBoost原理和实践(上)这篇文章中已经讲了xgboost的基本原理,没有看过的可以查看一下,对算法能用更深的了解,这篇文章将介绍xgboost的实践,涉及数据的读取、数据模型训练、模型保存、模型加载等全部流程,后续文章会介绍特征工程的一下东西,欢迎关注。XGBoost可以加载多种数据格式的训练数据:libsvm 格式的文本数据;dtrain1 = xgb.DMatrix...

weixin_39582724的博客 127

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

机器学习实践(1.2)XGBoost回归任务

XGBoost属于Boosting集成学习模型,本文描述XGBoost的回归任务实践

LMTX069的博客 1万+

机器学习算法加强——XGBoost实践

ta 白酒、泰坦尼克号例子 import xgboost as xgb import numpy as np from sklearn.model_selection import train_test_split # cross_validation from sklearn.linear_model import LogisticRegression from sklearn.metrics import accuracy_score if __name__ == "__ma...

Grateful_Dead424的博客 226

【机器学习】揭秘XGboost:高效梯度提升算法的实践与应用

XGBoost(Extreme Gradient Boosting)是对梯度提升树的改进,并且在损失函数中加入了正则化项。目标函数的第一项表示整个强学习器的损失,第二部分表示强学习器中 K 个弱学习器的复杂度。xgboost 每一个弱学习器的复杂度主要从两个方面来考量:γT 中的 T 表示一棵树的叶子结点数量,γ 是对该项的调节系数λ||w||2 中的 w 表示叶子结点输出值组成的向量,λ 是对该项的调节系数。

2301_76820214的博客 3279

机器学习深版05:XGBoost实践

机器学习深版05:XGBoost实践 文章目录机器学习深版05:XGBoost实践1. 泰坦尼克2.毒蘑菇的代码3. 鸢尾花数据4. 葡萄酒5. 读取数据 参考文章: https://blog.youkuaiyun.com/zhaiax672/article/details/80488242?utm_medium=distribute.pc_relevant_bbs_down.none-task-blog-baidujs-1.nonecase&depth_1-utm_source=distribute.pc_

fafagege11520的博客 160
上一篇: 机器学习——提升算法理论
下一篇: 机器学习——SVM算法
CoderMateng
博客等级 码龄7年 8粉丝 57原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值