【无标题】天池机器训练营task3

LightGBM是2017年由微软推出的可扩展机器学习系统,是微软旗下DMKT的一个开源项目,由2014年首届阿里巴巴大数据竞赛获胜者之一柯国霖老师带领开发。它是一款基于GBDT(梯度提升决策树)算法的分布式梯度提升框架,为了满足缩短模型计算时间的需求,LightGBM的设计思路主要集中在减小数据对内存与计算性能的使用,以及减少多机器并行计算时的通讯代价。
LightGBM的主要优点:
简单易用。提供了主流的Python\C++\R语言接口,用户可以轻松使用LightGBM建模并获得相当不错的效果。
高效可扩展。在处理大规模数据集时高效迅速、高准确度,对内存等硬件资源要求不高。
鲁棒性强。相较于深度学习模型不需要精细调参便能取得近似的效果。
LightGBM直接支持缺失值与类别特征,无需对数据额外进行特殊处理
LightGBM的主要缺点:
相对于深度学习模型无法对时空位置建模,不能很好地捕获图像、语音、文本等高维数据。
在拥有海量训练数据,并能找到合适的深度学习模型时,深度学习的精度可以遥遥领先LightGBM。
LightGBM的应用:
机器学习和数据挖掘领域,同时,LightGBM还被成功应用在工业界与学术界的各种问题中。例如金融风控、购买行为识别、交通流量预测、环境声音分类、基因分类、生物成分分析等诸多领域。虽然领域相关的数据分析和特性工程在这些解决方案中也发挥了重要作用,但学习者与实践者对LightGBM的一致选择表明了这一软件包的影响力与重要性。
二、实践:
● Step1: 库函数导入● Step2: 数据读取/载入● Step3: 数据信息简单查看● Step4: 可视化描述● Step5: 利用 LightGBM 进行训练与预测● Step6: 利用 LightGBM 进行特征选择● Step7: 通过调整参数获得更好的效果
基本函数库:
numpy (Python进行科学计算的基础软件包)
pandas(pandas是一种快速,强大,灵活且易于使用的开源数据分析和处理工具)
matplotlib和seaborn绘图
数据下载 :
#下载需要用到的数据集
!wget https://tianchi-media.oss-cn-beijing.aliyuncs.com/DSW/8LightGBM/high_diamond_ranked_10min.csv
● Step1: 库函数导入

基础函数库
import numpy as np
import pandas as pd

绘图函数库
import matplotlib.pyplot as plt
import seaborn as sns

● Step2: 数据读取/载入

我们利用Pandas自带的read_csv函数读取并转化为DataFrame格式
df = pd.read_csv(’./high_diamond_ranked_10min.csv’)
y = df.blueWins

● Step3: 数据信息简单查看

利用.info()查看数据的整体信息
df.info()

进行简单的数据查看,我们可以利用 .head() 头部.tail()尾部
df.head()

df.tail()

标注标签并利用value_counts函数查看训练集标签的数量
y = df.blueWins
y.value_counts()

数据集正负标签数量基本相同,不存在数据不平衡的问题。
标注特征列
drop_cols = [‘gameId’,‘blueWins’]
x = df.drop(drop_cols, axis=1)

对于特征进行一些统计描述
x.describe()

根据上面的描述,我们可以去除一些重复变量,比如只要知道蓝队是否拿到一血,我们就知道红队有没有拿到,可以去除红队的相关冗余数据。
drop_cols = [‘redFirstBlood’,‘redKills’,‘redDeaths’
,‘redGoldDiff’,‘redExperienceDiff’, ‘blueCSPerMin’,
‘blueGoldPerMin’,‘redCSPerMin’,‘redGoldPerMin’]
x.drop(drop_cols, axis=1, inplace=True)

● Step4: 可视化描述
data = x
data_std = (data - data.mean()) / data.std()

data.mean(axis=0) 输出矩阵为一行,求每列的平均值,同理data.mean(axis=1) 输出矩阵为一列,求每行的平均值
data.std(axis=0) 输出矩阵为一列,求每列的标准差,同理data.std(axis=1) 输出矩阵为一列,求每行的标准差
#标准差也成为标准偏差,表示数据的离散程度,和标准差大小成反比
data = pd.concat([y, data_std.iloc[:, 0:9]], axis=1)

concat函数是在pandas底下的方法,可以将数据根据不同的轴作简单的融合;
iloc[]是取几行,例如,iloc[:5],取前5行
loc[]是取到第几行,例如,loc["left],表示按顺序,取到 left 这一行。
data = pd.melt(data, id_vars=‘blueWins’, var_name=‘Features’, value_name=‘Values’)

数据分析的时候经常要把宽数据—>>长数据
fig, ax = plt.subplots(1,2,figsize=(15,5))

ax=plt.subplots(m,n,figsize=(a,b)) 画出mn个字图size为ab,fig为图片变量,ax为m*n的坐标变量(数组),分别指向相应生成字图的坐标
绘制小提琴图
sns.violinplot(x=‘Features’, y=‘Values’, hue=‘blueWins’, data=data, split=True,
inner=‘quart’, ax=ax[0], palette=‘Blues’)
fig.autofmt_xdate(rotation=45)

data = x
data_std = (data - data.mean()) / data.std()
data = pd.concat([y, data_std.iloc[:, 9:18]], axis=1)
data = pd.melt(data, id_vars=‘blueWins’, var_name=‘Features’, value_name=‘Values’)

绘制小提琴图
sns.violinplot(x=‘Features’, y=‘Values’, hue=‘blueWins’,
data=data, split=True, inner=‘quart’, ax=ax[1], palette=‘Blues’)
fig.autofmt_xdate(rotation=45)

plt.show()

‘’’
小提琴图 (Violin Plot)是用来展示多组数据的分布状态以及概率密度。这种图表结合了箱形图和密度图的特征,主要用来显示数据的分布形状。
从图中我们可以看出:
击杀英雄数量越多更容易赢,死亡数量越多越容易输(bluekills与bluedeaths左右的区别)。
助攻数量与击杀英雄数量形成的图形状类似,说明他们对游戏结果的影响差不多。
一血的取得情况与获胜有正相关,但是相关性不如击杀英雄数量明显。
经济差与经验差对于游戏胜负的影响较小。
击杀野怪数量对游戏胜负的影响并不大。
同时我们画出各个特征之间的相关性热力图,颜色越深代表特征之间相关性越强,我们剔除那些相关性较强的冗余特征。
‘’’
##热度图
plt.figure(figsize=(18,14))
sns.heatmap(round(x.corr(),2), cmap=‘Blues’, annot=True)
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值