Python实现LightGBM回归模型(LGBMRegressor算法)项目实战

本文涉及的产品
模型在线服务 PAI-EAS,A10/V100等 500元 1个月
模型训练 PAI-DLC,100CU*H 3个月
交互式建模 PAI-DSW,每月250计算时 3个月
简介: Python实现LightGBM回归模型(LGBMRegressor算法)项目实战

说明:这是一个机器学习实战项目(附带数据+代码+文档+视频讲解),如需数据+代码+文档+视频讲解可以直接到文章最后获取。

image.png

image.png

1.项目背景

房地产不仅是国民经济的支柱产业,更和民生问题密不可分,随着房产越炒越热,人们对于房价的关注度也持续变高,因此能够较为精准地对房价进行预测也变得越来越有意义。房价作为多指标影响因子,不仅受时间,区域的影响,房屋年龄、附近地理条件、人文、交通等等因素也同样会对房价产生不同程度的影响。本项目提出一种基于集成学习的房价预测模型:LightGBM回归模型,使用LGBMRegressor算法。 

2.数据获取

本次建模数据来源于网络(本项目撰写人整理而成),数据项统计如下

编号 

变量名称

描述

1

MSSubClass

销售中涉及的住房类型

2

MSZoning

销售的一般分区分类

3

LotFrontage

与房子相连的街道线性脚

4

LotArea

平方英尺的地段大小

5

Street

进入房子的道路类型

6

Alley

进入房子的胡同类型

7

LotShape

房子的一般形状

8

LandContour

房子的平整性

……

9

SalePrice

销售价格   目标变量

上述表格罗列了部分属性进行展示。

数据详情如下(部分展示):

image.png

3.数据预处理

真实数据中可能包含了大量的缺失值和噪音数据或人工录入错误导致有异常点存在,非常不利于算法模型的训练。数据清洗的结果是对各种脏数据进行对应方式的处理,得到标准的、干净的、连续的数据,提供给数据统计、数据挖掘等使用。数据预处理通常包含数据清洗、归约、聚合、转换、抽样等方式,数据预处理质量决定了后续数据分析挖掘及建模工作的精度和泛化价值。以下简要介绍数据预处理工作中主要的预处理方法:

3.1 用Pandas工具查看数据

使用Pandas工具的head()方法查看前五行数据:

image.png

从上图可以看到,总共有81个字段:特征变量79个,其中Id只是一个索引,建模时我们要去掉它;另外,此数据集中有很多缺失数据。

关键代码:

image.png

3.2计算每个特征缺失值的百分比

使用Pandas工具的isna() mean()方法计算每个特征缺失数据的百分比:计算出数据缺失超过50%的特征变量:

image.png

从上图可以看到,总共有5个特征变量数据缺失超过80%,接下来本项目中将会删掉这些特征变量,不参与后面的建模。

关键代码:

image.png

3.3区分数值型特征和分类型特征

通过Pandas工具的select_dtypes()方法来选择区分数值型特征和分类型特征,分类型特征需要进行相应的处理,以满足机器建模的需要。

分类型特征如下:

image.png image.png

数值型特征如下:

image.png image.png

关键代码如下:

image.png

3.4特征变量空值情况统计

image.png image.png

通过上图可以看到,一些字段存在空值:针对

'BsmtQual','BsmtCond','BsmtExposure','BsmtFinType1','BsmtFinType2','GarageType','GarageFinish','GarageQual','FireplaceQu','GarageCond' 这些字段用”None”值填充。

针对'MSZoning', 'Utilities', 'Exterior1st', 'Exterior2nd', 'MasVnrType', 'Electrical', 'KitchenQual','Functional', 'SaleType' 这些字段用本数据项最频繁的数值进行填充。

关键代码如下:

image.png

4.探索性数据分析

4.1 Utilities特征分布分析

用Pandas工具的value_counts().plot()方法进行统计绘图,输出结果如下:

image.png

图形化展示如下:

image.png

从上面两个图中可以看到,分类为AllPub的有1459条,分类为NoSeWa的有1条,数据偏差非常大。

4.2 Street特征分布分析

image.png

image.png

从上面两个图中可以看到,分类为Pave的有1454条,分类为Grvl的有6条,数据偏差非常大。

4.3 Condition2特征分布分析

image.png

image.png

从上面两个图中可以看到,分类为Norm的有1445条,为其它类型的非常少,数据偏差非常大。

4.4 RoofMatl特征分布分析

image.png

image.png

从上面两个图中可以看到,分类为CompShg的有1434条,为其它类型的非常少,数据偏差非常大。

4.5 Heating特征分布分析

image.png

image.png

从上面两个图中可以看到,分类为GasA的有1428条,为其它类型的非常少,数据偏差非常大。

4.6 房屋年龄的描述性统计分析

首先通过YrSold和YearBuilt构造出房屋的年龄,然后通过Pandas工具的describe()方法进行描述性统计分析:

image.png

从上图可以看到房屋年龄最小不到1年,最大136年,平均年龄在36年左右。

4.7构造 TotalBsmtBath TotalBath TotalSA特征

通过Pandas工具的head()方法进行查看如下:

image.png

4.8分类特征的处理

特征的处理分为两类:一种是有序的特征,针对这种特征直接进行数值的映射;另一种是编码类别特征,针对这种特征进行One Hot编码处理;处理结果如下:

image.png

 

5.特征工程

5.1 建立特征数据和标签数据

SalePrice为标签数据,除 SalePrice之外的为特征数据。关键代码如下:

image.png

5.2 数据集拆分

训练集拆分,分为训练集和验证集,70%训练集和30%验证集。关键代码如下:

image.png

6.构建lightgbm回归模型

主要使用LGBMRegressor算法,用于目标回归。 

6.1模型参数

编号

模型名称

参数

1

Lightgbm回归模型

objective='regression'

2

num_leaves=4

3

learning_rate=0.01

4

n_estimators=12000

5

max_bin=200

6

bagging_fraction=0.75

7

bagging_freq=5

8

bagging_seed=7

9

feature_fraction=0.4

关键代码如下:

image.png

7.模型评估

7.1评估指标及结果

评估指标主要包括可解释方差值、平均绝对误差、均方误差、R方值等等。

模型名称

指标名称

指标值

测试集

Lightgbm回归模型

可解释方差值

0.89

平均绝对误差

15732.75

均方误差

750967526.17

R方

0.89

从上表可以看出,R方为89%  可解释方差值为89%,lightgbm回归模型比较优秀,效果非常好。

关键代码如下: 

image.png

7.2 模型特征重要性

由于特征比较多,选取前20个特征进行绘图展示:

image.png

从上图可以看到特征变量对此模型的重要性依次为:TotalSA、LotArea、1stFlrSF、GarageArea、TotalBsmtSF、GrLivArea、BsmtFinSF1、BsmtUnfSF、LotFrontage、OpenPorchSF、MasVnrArea、GarageYrBlt等等。

7.3 真实值与预测值对比图

image.png

从上图可以看出真实值和预测值波动基本一致,模型拟合效果非常棒。

8.结论与展望

综上所述,本文采用了lightgbm回归模型,最终证明了我们提出的模型效果良好。可用于日常金融中房屋销售价格的预测。

# 本次机器学习项目实战所需的资料,项目资源如下:
 
# 项目说明:
 
# 获取方式一:
 
# 项目实战合集导航:
 
https://docs.qq.com/sheet/DTVd0Y2NNQUlWcmd6?tab=BB08J2
 
# 获取方式二:
 
链接:https://pan.baidu.com/s/1em73VZMHvXAazD70tr4xKw 
提取码:22n6
相关实践学习
使用PAI+LLaMA Factory微调Qwen2-VL模型,搭建文旅领域知识问答机器人
使用PAI和LLaMA Factory框架,基于全参方法微调 Qwen2-VL模型,使其能够进行文旅领域知识问答,同时通过人工测试验证了微调的效果。
机器学习概览及常见算法
机器学习(Machine Learning, ML)是人工智能的核心,专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能,它是使计算机具有智能的根本途径,其应用遍及人工智能的各个领域。 本课程将带你入门机器学习,掌握机器学习的概念和常用的算法。
相关文章
|
10天前
|
存储 算法 调度
【复现】【遗传算法】考虑储能和可再生能源消纳责任制的售电公司购售电策略(Python代码实现)
【复现】【遗传算法】考虑储能和可再生能源消纳责任制的售电公司购售电策略(Python代码实现)
110 26
|
17天前
|
机器学习/深度学习 数据采集 并行计算
多步预测系列 | LSTM、CNN、Transformer、TCN、串行、并行模型集合研究(Python代码实现)
多步预测系列 | LSTM、CNN、Transformer、TCN、串行、并行模型集合研究(Python代码实现)
185 2
|
18天前
|
机器学习/深度学习 算法 机器人
【机器人路径规划】基于D*算法的机器人路径规划(Python代码实现)
【机器人路径规划】基于D*算法的机器人路径规划(Python代码实现)
|
18天前
|
机器学习/深度学习 算法 机器人
【机器人路径规划】基于改进型A*算法的机器人路径规划(Python代码实现)
【机器人路径规划】基于改进型A*算法的机器人路径规划(Python代码实现)
|
18天前
|
机器学习/深度学习 编解码 算法
【机器人路径规划】基于迪杰斯特拉算法(Dijkstra)的机器人路径规划(Python代码实现)
【机器人路径规划】基于迪杰斯特拉算法(Dijkstra)的机器人路径规划(Python代码实现)
117 4
|
18天前
|
机器学习/深度学习 算法 机器人
【机器人路径规划】基于A*算法的机器人路径规划研究(Python代码实现)
【机器人路径规划】基于A*算法的机器人路径规划研究(Python代码实现)
|
18天前
|
机器学习/深度学习 算法 机器人
【机器人路径规划】基于深度优先搜索(Depth-First-Search,DFS)算法的机器人路径规划(Python代码实现)
【机器人路径规划】基于深度优先搜索(Depth-First-Search,DFS)算法的机器人路径规划(Python代码实现)
|
18天前
|
算法 机器人 定位技术
【机器人路径规划】基于流场寻路算法(Flow Field Pathfinding)的机器人路径规划(Python代码实现)
【机器人路径规划】基于流场寻路算法(Flow Field Pathfinding)的机器人路径规划(Python代码实现)
机器学习/深度学习 算法 自动驾驶
141 0
|
26天前
|
算法 定位技术 调度
基于蚂蚁优化算法的柔性车间调度研究(Python代码实现)
基于蚂蚁优化算法的柔性车间调度研究(Python代码实现)

推荐镜像

更多