根据《阿里云天池大赛赛题解析》整理,建议配合阅读效果更好
1.赛题理解
(1)赛题
火力发电的基本原理是燃料燃烧生产蒸汽,蒸汽推动汽轮机旋转带动发电机旋转,产生电能,影响火力发电效率的核心是锅炉的燃烧效率(每单位时间内产生的蒸汽量),影响锅炉燃烧效率的因素很多,包括锅炉的可调参数,如燃烧给量、一二次风、引风、返料风、给水水量;以及锅炉的工况,如锅炉床温、床压、炉膛温度、压力,过热器的温度等。
本赛题目标为根据给定的锅炉传感器采集的数据(燃烧给量、锅炉工况等),预测产生的蒸汽量。
(2)数据概览
根据阿里云天池官网的赛题提供的训练数据显示,一共有38个特征变量(字段名为V0~V37),1个目标变量(字段名为target)。
(3)评估指标
预测误差以均方误差MSE(Mean Squared Error)作为评判标准,MSE值越小,说明预测模型描述实验数据具有越高的准确度。
(4)赛题模型
常用的模型包括回归预测模型和分类预测模型,回归预测模型包括线性回归、岭回归、决策树回归、梯度提升树回归,分类预测模型包括二类分类、多类别分类。
本赛题中,预测值蒸汽量为连续型数值变量,因此使用回归预测模型。
2.数据探索
(1)单变量分析
对于连续型变量,需要对其进行描述性统计,统计其的中心分布趋势和变量分布,包括平均值、中位数、最大值、最小值、方差、标准差等。
对于类别型变量,一般使用频次或占比表示每一个类别的分布情况。可用直方图、箱线图来表示可视化分布情况。
(2)双变量分析
包括连续型与连续型、类别型与类别型、类别型与连续型三种双变量分析组合,使用不同的统计算法和图像表达来描述双变量之间的关系。
①连续型与连续型
统计分析算法:计算相关性
图形表达:散点图
②类别型与类别型
统计分析算法:
双向表——通过建立频次(次数)和频率(占比)的双向表来分析变量之间的关系。
卡方检验——主要用于两个和两个以上样本率(构成比)及两个二值型离散变量的关联性分析
图形表达:堆叠柱状图
③类别型和连续型
图形表达:小提琴图,分析类别变量在不同类别时,另一个连续变量的分布情况
3.特征工程
从原始数据中,找出、构建特征(就是对变量的处理),能很好地描述数据,并且预测表现性能达到最优的过程。
处理流程:去掉无用特征、去掉冗余特征、生成新特征、特征转换、特征处理
3.1特征转换
变量形态处理,对变量的取值区间等进行转换,使其分布在合理的区间内或者更好地描述特征形态和特点或者使其更方便代入模型计算。
包括标准化、归一化、定量特征二值化、定性特征哑变量、缺失值处理和数据转换等。
(1)标准化
通过求标准分数的方法,将特征转换为标准正态分布。
(2)归一化
将样本的特征值转换到同一量纲下,把数据映射到[0,1]或者[a,b]区间内。
归一化与标准化的使用场景
如果对输出结果范围有要求,则用归一化
如果数据较为稳定,不存在极端的最大值或者最小值,则用归一化。
如果数据存在异常值和较多噪声,则用标准化,这样可以通过中心化间接避免异常值和极端值的影响。
支持向量机K近邻主成分分析等模型必须进行归一化或标注努哈操作。
(3)定量特征二值化
设定一个阈值,大于阈值的赋值为1,小于等于阈值的赋值为0.
(4)定性特征哑变量
也被称为虚拟变量,通常是人为虚拟的变量,取值为0或1,用来反映某个变量的不同属性。将类别变量转换为哑变量的过程就是哑编码。而对于有n个类别属性的变量,通常会以1个类别特征为参照,产生n-1个哑变量。
引入哑变量的目的是把原本不能定量处理的变量进行量化,从而评估定性因素对因变量的影响。
通常会将原始的多变量变量转换为哑变量,在构建回归模型时,每一个哑变量都能得出一个估计的回归系数,这样使得回归的结果更易于解释。
(5)缺失值和异常值处理
①缺失值处理
处理方法:删除,平均数、众数、中位数填充,预测模型填充
②异常值处理
检测:箱线图、直方图、散点图检测异常值
处理方法:删除、转换、填充、区别对待等方法
(6)数据转换
在使用直方图、核密度估计等工具对特征分布进行分析的过程中,可能会有一些变量的取值分布不平均,这将会极大影响估计,因此,需要对变量的取值区间等进行转换,使其分布在合理的区间内。
常用的转换方法:
①对数变换:对变量取对数,可以更改变量的分布形状。
②取平方根或立方根:变量的平方根和立方根对其分布有波形的影响。
③变量分组:可以基于原始值、百分比或频率等对变量分类。
3.2特征降维
变量维度处理,降维指的是采用某种映射方法,将高维向量空间的数据点映射到低维的空间中。
在原始的高维空间中,向量数据包含冗余信息及噪声信息,其在实际应用中会对模型识别造成误差。因此,需要减少无用或冗余的信息,减少误差,进行特征选择或进行线性降维。
(1)特征选择
直接将不重要的特征删除
特征选择的方法:过滤法、包装法、嵌入法
①过滤法:根据特征变量和目标变量的关系进行特征选择,包括方差选择法,相关系数法,卡方检验,最大信息系数法等。
②包装法:使用遗传算法、退火算法等算法,每次选择若干特征
③嵌入法:使用机器学习的决策树、深度学习等算法和模型进行训练,得到各个特征的权值系数,并根据系数从大到小选择特征。
(2)线性降维
常用的方法有主成分分析法和线性判别分析法
①主成分分析法
将高维数据映射到低维空间中表示,并期望在所投影的维度上数据的方差最大,以较少的维度保留较多的原数据点特性
②线性判别分析法
与主成分分析法尽可能多地保留数据信息不同,线性判别分析法的目标是使降维后的数据点尽可能地容易被区分。
4.模型训练
回归是一种来自统计的技术,用于在目标数量连续时预测所需目标数量的值。
步骤:导入需要的工具库——数据预处理——训练模型——预测结果
(1)线性回归模型
假定因变量Y与自变量X呈线性相关,则可以采用线性模型找出自变量X和因变量Y的关系,以便预测新的自变量X的值。
首先,需要导入数据

import os
#读取数据
os.chdir(r"E:\\")
data = pd.read_csv(r'./data.csv')
#选取自变量
train=data.columns[0:38]
#选取因变量
target=data['target']

在使用任何机器学习模型之前,都需要对数据集进行切分,将其且分为训练数据(训练集)和验证数据(测试集)。
切分数据代码如下:

#切分数据集
from sklearn.model_selection import train_test_split #切分数据
#切分数据,训练数据为80%,验证数据为20%
train_data,test_data,train_target,test_target=train_test_split(train,target,test_size=0.2,random_state=0)

使用sklearn调用线性回归模型进行预测,代码如下:

from sklearn.metrics import mean_squared_error #评价指标
#从sklearn算法库中导入线性回归模型
from sklearn.linear_model import LinearRegression
#定义线性回归模型
clf=LinearRegression()
#将训练集的自变量和因变量代入到线性回归模型中训练
clf.fit(train_data,train_target)
#将测试集的因变量代入线性回归模型中得到测试集的预测值
test_pred=clf.predict(test_data)
#得到本次模型准确率得分
score=mean_squared_error(test_target,test_pred)
print("LinearRegression: ",score)

(2)K近邻回归模型
K近邻算法可用于分类和回归。通过找出某个样本的k个最近邻居,将这些邻居的某个(些)属性的平均值赋给该样本,就可以得到该样本对应属性的值。
K近邻回归调用方法:

from sklearn.metrics import mean_squared_error #评价指标
#从sklearn算法库中导入k近邻回归模型算法
from sklearn.neighbors import KNeighborsRegressor
#定义K近邻回归模型
clf=KNeighborsRegressor(n_neighbors=3) #选取最近的3个“邻居”的因变量的值的平均值赋值给因变量
#将训练集的自变量和因变量代入到K近邻回归模型中训练
clf.fit(train_data,train_target)
#将测试集的因变量代入线性回归模型中得到测试集的预测值
test_pred=clf.predict(test_data)
#得到本次模型准确率得分
score=mean_squared_error(test_target,test_pred)
print("KNeighborsRegressor: ",score)

(3)决策树回归模型
决策树回归可以理解为根据一定准则,将一个空间划分为若干子空间,然后利用子空间内所有点的信息表示这个子空间的值。设定划分次数,可以使用最小二乘法进行分割点选择,得到所对应的子空间,然后用子空间内均值作为输出值。
决策树回归调用方法:

from sklearn.metrics import mean_squared_error #评价指标
#从sklearn算法库中导入决策树回归算法
from sklearn.tree import DecisionTreeRegressor
#定义决策树回归回归模型
clf=DecisionTreeRegressor(max_depth=3, min_samples_leaf = 4, min_samples_split=2)
#决策树最大深度取3,叶子节点最少样本数取4,内部节点再划分所需最小样本数取2
#更多决策树参数可看https://blog.csdn.net/qq_41577045/article/details/79844709
#将训练集的自变量和因变量代入到决策树回归回归模型中训练
clf.fit(train_data,train_target)
#将测试集的因变量代入线性回归模型中得到测试集的预测值
test_pred=clf.predict(test_data)
#得到本次模型准确率得分
score=mean_squared_error(test_target,test_pred)
print("DecisionTreeRegressor: ",score)

(4)随机森林回归模型
随机森林就是通过集成学习的思想将多棵树集成的一种算法,基本单元是决策树,而它的本质属于机器学习的一个分支——集成学习。
在回归问题中,随机森林输出所有决策树输出的平均值
随机森林回归模型调用方法:

from sklearn.metrics import mean_squared_error #评价指标
#从sklearn算法库中导入随机森林回归算法
from sklearn.ensemble import RandomForestRegressor
#定义随机森林回归模型
clf=RandomForestRegressor(n_estimators=200) #选择200棵决策树
#将训练集的自变量和因变量代入到随机森林回归模型中
clf.fit(train_data,train_target)
#预测测试集的因变量预测值
test_pred=clf.predict(test_data)
#得到本次模型准确率得分
score=mean_squared_error(test_target,test_pred)
print("RandomForestRegressor: ",score)

(5)LightGBM回归模型
LightGBM是Microsoft开发的一个GBDT算法框架,支持高效率的并行训练,具有更快的训练速度、更低的内存消耗、更好的准确率、分布式支持、可以快速处理海量数据等特征。
LightGBM回归模型调用方法:

from sklearn.metrics import mean_squared_error #评价指标
#从sklearn算法库中导入LightGBM回归模型
import lightgbm as lgb
#定义LightGBM回归模型
clf=lgb.LGBMRegressor(
learning_rate=0.01,
max_depth=-1,
n_estimators=5000,
boosting_type='gbdt',
random_state=2019,
objective='regression')
#更多LGB模型参数可看https://www.cnblogs.com/jiangxinyang/p/9337094.html或https://blog.csdn.net/qq_24591139/article/details/100085359
#将训练集的自变量和因变量代入到LightGBM回归模型中
clf.fit(train_data,train_target,eval_metric='MSE',verbose=50)
#预测测试集的因变量预测值
test_pred=clf.predict(test_data)
#得到本次模型准确率得分
score=mean_squared_error(test_target,test_pred)
print("lightgbm: ",score)

阿里云天池大赛——机器学习篇赛题解析(赛题一)上相关推荐

  1. 阿里云天池大赛——机器学习篇赛题解析(赛题一)下

    5.模型验证 5.1模型评估的概念和方法 (1)欠拟合和过拟合 当一个模型恰到好处地表达了数据关系时,我们就认为这个模型拟合效果好. 欠拟合也叫高偏差,是指算法所训练的模型不能完整地表达数据关系. 过 ...

  2. 阿里云天池大赛——机器学习篇赛题解析(赛题一)思维导图

  3. 国内首本数据竞赛图书《阿里云天池大赛赛题解析——机器学习篇》今日开启预售!

    天池平台已经举办了超过 200 场来自真实业务场景的竞赛,每场赛事沉淀的课题和数据集,将在天池保留和开放.天池平台已成为在校学生踏入职场前的虚拟实践基地,也成为聚集40万数据人才,孵化2000余家数据 ...

  4. 阿里云天池大赛赛题解析——机器学习篇 | 留言赠书

    国内第一本针对竞赛实操的图书:<阿里云天池大赛赛题解析--机器学习篇>,正式发售. 阿里云天池7年200多场数据大赛精华提取录 为什么写这本书 七年前,天池团队的几名创始成员带着" ...

  5. 阿里云天池大赛赛题解析——机器学习篇

    阿里云天池大赛赛题解析--机器学习篇 (豆瓣)图书阿里云天池大赛赛题解析--机器学习篇 介绍.书评.论坛及推荐 https://book.douban.com/subject/35192976/ 阿里 ...

  6. 阿里云天池大赛赛题解析(深度学习篇)--阅读笔记1--赛题一

    阿里云天池大赛赛题解析(深度学习篇)–阅读笔记1 [x]表示遇到不懂的知识,将在[知识补充]给出具体讲解. 文章目录 阿里云天池大赛赛题解析(深度学习篇)--阅读笔记1 前言 赛题一 瑞金医院MMC人 ...

  7. 阿里云天池大赛赛题(机器学习)——天猫用户重复购买预测(完整代码)

    目录 赛题背景 全代码 导入包 读取数据(训练数据前10000行,测试数据前100条) 读取全部数据 获取训练和测试数据 切分40%数据用于线下验证 交叉验证:评估估算器性能 F1验证 Shuffle ...

  8. 阿里云天池大赛赛题(机器学习)——工业蒸汽量预测(完整代码)

    目录 赛题背景 全代码 导入包 导入数据 合并数据 删除相关特征 数据最大最小归一化 画图:探查特征和标签相关信息 对特征进行Box-Cox变换,使其满足正态性 标签数据统计转换后的数据,计算分位数画 ...

  9. 阿里云天池大赛赛题(机器学习)——阿里云安全恶意程序检测(完整代码)

    目录 赛题背景 全代码(ML 和 DL) 特征工程进阶与方案优化 代码 特征工程进阶部分 基于LightGBM 的模型验证 模型测试 深度学习解决方案:TextCNN建模 代码 数据读取 数据预处理 ...

  10. 阿里云天池大赛赛题(机器学习)——O2O优惠券预测(完整代码)

    目录 赛题背景 全代码 算法包及全局变量 工具函数 训练及结果输出 算法分析 调参 整合及输出结果 赛题实践 结果生成 绘制学习曲线 参数调优 赛题背景 O2O行业天然关联着数亿消费者,各类App每天 ...

最新文章

  1. 服务器搭建虚拟win云服务,云服务器创建win10虚拟机
  2. python 私有云_利用Docker+NextCloud搭建私有云盘
  3. 美团工程师上演“谍战”剧?“黑了一把”拼多多获取薪资信息
  4. Zabbix监控CPU与实际值不符合,
  5. 输入任意个整数以回车键结束_Enter键只知道回车作用?以下7个用法,你会几个?...
  6. shell 脚本调试
  7. 在Linux Debian 8下部署基于PHP的Web项目。
  8. 支付宝服务商子商户_支付宝推广数字化经营服务商应该怎么做?
  9. 算法基础:最大递减数问题(Golang实现)
  10. 将函数实现放在头文件中
  11. 工作47:继续理解父子组件
  12. 骑士CMS模版注入+文件包含getshell漏洞复现
  13. netty权威指南学习
  14. keil4for51与keil4forARM的安装与兼容
  15. 数字水印 改进的patchwork算法 实现
  16. python从excel中读取数据 写入word_Java调用python脚本,读取excel表格数据并写入word文档-Go语言中文社区...
  17. 千峰java逆战班Day31
  18. fx5u怎么与计算机通讯,两个FX5U系列PLC如何用RS485进行通信幻灯片
  19. 前端技巧总结---持续更新
  20. 《让荧光舞一直挥舞下去》

热门文章

  1. NOD32 病毒定义更新程序 v2.1
  2. Cross-lingual Transfer of Correlations between Parts of Speech and Gaze Features 阅读笔记
  3. 统计学基础知识有哪些?看这一篇就够了
  4. 实例讲解统计学基础知识(1):统计学基础概念
  5. android个人日记本论文,手机app移动开发论文-个人心情日记本的设计实现 毕设论文.doc...
  6. 禁用“微软 Windows 10 易升”
  7. 小米笔记本 镜像_小米笔记本Pro Windows 10 原装系统镜像
  8. 装双系统win10和android,厉害了小米6!不仅骁龙835,还支持安卓和win10双系统
  9. edius隐藏快捷键_超级实用的edius常用快捷键
  10. 服装PDM产品数据管理