龙珠训练营机器学习-XGBoost学习笔记

龙珠训练营机器学习-XGBoost学习笔记,第1张

学习笔记为阿里云天池龙珠计划机器学习训练营的学习内容,学习链接为:点我跳转

感谢各位的阅读
  • 学习知识点概要
    • XGBoost的介绍
      • XGBoost的主要优点
      • XGBoost的主要缺点
    • 代码流程(本人适当的进行了优化)
  • 学习内容(通过代码学习)
    • 下载数据集
    • 导库
    • 数据读取/载入
    • 可视化描述
    • 对离散变量进行编码
    • 训练与预测
  • XGBOOST专题地址

学习知识点概要 XGBoost的介绍

XGBoost是2016年由华盛顿大学陈天奇老师带领开发的一个可扩展机器学习系统。严格意义上讲XGBoost并不是一种模型,而是一个可供用户轻松解决分类、回归或排序问题的软件包。

XGBoost的主要优点

1.简单易用。相对其他机器学习库,用户可以轻松使用XGBoost并获得相当不错的效果。
2.高效可扩展。在处理大规模数据集时速度快效果好,对内存等硬件资源要求不高。
3.鲁棒性强。相对于深度学习模型不需要精细调参便能取得接近的效果。
4.XGBoost内部实现提升树模型,可以自动处理缺失值。

XGBoost的主要缺点

1.相对于深度学习模型无法对时空位置建模,不能很好地捕获图像、语音、文本等高维数据。
2.在拥有海量训练数据,并能找到合适的深度学习模型时,深度学习的精度可以遥遥领先XGBoost。

代码流程(本人适当的进行了优化)

Part1 基于天气数据集的XGBoost分类实践
Step1: 库函数导入
Step2: 数据读取/载入
Step3: 数据信息简单查看
Step4: 可视化描述
Step5: 对离散变量进行编码
Step6: 利用 XGBoost 进行训练与预测
Step7: 利用 XGBoost 进行特征选择
Step8: 通过调整参数获得更好的效果

学习内容(通过代码学习) 下载数据集
!wget https://tianchi-media.oss-cn-beijing.aliyuncs.com/DSW/7XGBoost/train.csv
导库
##  基础函数库
import numpy as np 
import pandas as pd

## 绘图函数库
import matplotlib.pyplot as plt
import seaborn as sns
数据读取/载入
data = pd.read_csv('train.csv')
可视化描述
numerical_features = [x for x in data.columns if data[x].dtype == np.float]
category_features = [x for x in data.columns if data[x].dtype != np.float and x != 'RainTomorrow']
## 选取三个特征与标签组合的散点可视化
sns.pairplot(data=data[['Rainfall',
'Evaporation',
'Sunshine'] + ['RainTomorrow']], diag_kind='hist', hue= 'RainTomorrow')
plt.show()
对离散变量进行编码
## 把所有的相同类别的特征编码为同一个值
def get_mapfunction(x):
    mapp = dict(zip(x.unique().tolist(),
         range(len(x.unique().tolist()))))
    def mapfunction(y):
        if y in mapp:
            return mapp[y]
        else:
            return -1
    return mapfunction
for i in category_features:
    data[i] = data[i].apply(get_mapfunction(data[i]))
## 编码后的字符串特征变成了数字
data['Location'].unique()
训练与预测
from sklearn.metrics import accuracy_score
from xgboost import plot_importance

def estimate(model,data):

    #sns.barplot(data.columns,model.feature_importances_)
    ax1=plot_importance(model,importance_type="gain")
    ax1.set_title('gain')
    ax2=plot_importance(model, importance_type="weight")
    ax2.set_title('weight')
    ax3 = plot_importance(model, importance_type="cover")
    ax3.set_title('cover')
    plt.show()
def classes(data,label,test):
    model=XGBClassifier()
    model.fit(data,label)
    ans=model.predict(test)
    estimate(model, data)
    return ans
 
ans=classes(x_train,y_train,x_test)
pre=accuracy_score(y_test, ans)
print('acc=',accuracy_score(y_test,ans))
XGBOOST专题地址

声明:XGBOOST仅仅是集成学习的一种模型
点我跳转

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/917173.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-16
下一篇 2022-05-16

发表评论

登录后才能评论

评论列表(0条)

保存