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

本文涉及的产品
模型训练 PAI-DLC,5000CU*H 3个月
模型在线服务 PAI-EAS,A10/V100等 500元 1个月
交互式建模 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-EAS一键部署ChatGLM及LangChain应用
本场景中主要介绍如何使用模型在线服务(PAI-EAS)部署ChatGLM的AI-Web应用以及启动WebUI进行模型推理,并通过LangChain集成自己的业务数据。
机器学习概览及常见算法
机器学习(Machine Learning, ML)是人工智能的核心,专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能,它是使计算机具有智能的根本途径,其应用遍及人工智能的各个领域。 本课程将带你入门机器学习,掌握机器学习的概念和常用的算法。
相关文章
|
11天前
|
机器学习/深度学习 人工智能 算法
基于Python深度学习的【垃圾识别系统】实现~TensorFlow+人工智能+算法网络
垃圾识别分类系统。本系统采用Python作为主要编程语言,通过收集了5种常见的垃圾数据集('塑料', '玻璃', '纸张', '纸板', '金属'),然后基于TensorFlow搭建卷积神经网络算法模型,通过对图像数据集进行多轮迭代训练,最后得到一个识别精度较高的模型文件。然后使用Django搭建Web网页端可视化操作界面,实现用户在网页端上传一张垃圾图片识别其名称。
41 0
基于Python深度学习的【垃圾识别系统】实现~TensorFlow+人工智能+算法网络
|
11天前
|
机器学习/深度学习 人工智能 算法
【手写数字识别】Python+深度学习+机器学习+人工智能+TensorFlow+算法模型
手写数字识别系统,使用Python作为主要开发语言,基于深度学习TensorFlow框架,搭建卷积神经网络算法。并通过对数据集进行训练,最后得到一个识别精度较高的模型。并基于Flask框架,开发网页端操作平台,实现用户上传一张图片识别其名称。
37 0
【手写数字识别】Python+深度学习+机器学习+人工智能+TensorFlow+算法模型
|
11天前
|
机器学习/深度学习 人工智能 算法
基于深度学习的【蔬菜识别】系统实现~Python+人工智能+TensorFlow+算法模型
蔬菜识别系统,本系统使用Python作为主要编程语言,通过收集了8种常见的蔬菜图像数据集('土豆', '大白菜', '大葱', '莲藕', '菠菜', '西红柿', '韭菜', '黄瓜'),然后基于TensorFlow搭建卷积神经网络算法模型,通过多轮迭代训练最后得到一个识别精度较高的模型文件。在使用Django开发web网页端操作界面,实现用户上传一张蔬菜图片识别其名称。
50 0
基于深度学习的【蔬菜识别】系统实现~Python+人工智能+TensorFlow+算法模型
|
15天前
|
算法 Python
在Python编程中,分治法、贪心算法和动态规划是三种重要的算法。分治法通过将大问题分解为小问题,递归解决后合并结果
在Python编程中,分治法、贪心算法和动态规划是三种重要的算法。分治法通过将大问题分解为小问题,递归解决后合并结果;贪心算法在每一步选择局部最优解,追求全局最优;动态规划通过保存子问题的解,避免重复计算,确保全局最优。这三种算法各具特色,适用于不同类型的问题,合理选择能显著提升编程效率。
32 2
|
22天前
|
机器学习/深度学习 人工智能 算法
青否数字人声音克隆算法升级,16个超真实直播声音模型免费送!
青否数字人的声音克隆算法全面升级,能够完美克隆真人的音调、语速、情感和呼吸。提供16种超真实的直播声音模型,支持3大AI直播类型和6大核心AIGC技术,60秒快速开播,助力商家轻松赚钱。AI讲品、互动和售卖功能强大,支持多平台直播,确保每场直播话术不重复,智能互动和真实感十足。新手小白也能轻松上手,有效规避违规风险。
|
24天前
|
算法 测试技术 开发者
在Python开发中,性能优化和代码审查至关重要。性能优化通过改进代码结构和算法提高程序运行速度,减少资源消耗
在Python开发中,性能优化和代码审查至关重要。性能优化通过改进代码结构和算法提高程序运行速度,减少资源消耗;代码审查通过检查源代码发现潜在问题,提高代码质量和团队协作效率。本文介绍了一些实用的技巧和工具,帮助开发者提升开发效率。
26 3
|
23天前
|
分布式计算 Java 开发工具
阿里云MaxCompute-XGBoost on Spark 极限梯度提升算法的分布式训练与模型持久化oss的实现与代码浅析
本文介绍了XGBoost在MaxCompute+OSS架构下模型持久化遇到的问题及其解决方案。首先简要介绍了XGBoost的特点和应用场景,随后详细描述了客户在将XGBoost on Spark任务从HDFS迁移到OSS时遇到的异常情况。通过分析异常堆栈和源代码,发现使用的`nativeBooster.saveModel`方法不支持OSS路径,而使用`write.overwrite().save`方法则能成功保存模型。最后提供了完整的Scala代码示例、Maven配置和提交命令,帮助用户顺利迁移模型存储路径。
|
27天前
|
机器学习/深度学习 人工智能 算法
【车辆车型识别】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+算法模型
车辆车型识别,使用Python作为主要编程语言,通过收集多种车辆车型图像数据集,然后基于TensorFlow搭建卷积网络算法模型,并对数据集进行训练,最后得到一个识别精度较高的模型文件。再基于Django搭建web网页端操作界面,实现用户上传一张车辆图片识别其类型。
72 0
【车辆车型识别】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+算法模型
|
1月前
|
机器学习/深度学习 算法 搜索推荐
从理论到实践,Python算法复杂度分析一站式教程,助你轻松驾驭大数据挑战!
【10月更文挑战第4天】在大数据时代,算法效率至关重要。本文从理论入手,介绍时间复杂度和空间复杂度两个核心概念,并通过冒泡排序和快速排序的Python实现详细分析其复杂度。冒泡排序的时间复杂度为O(n^2),空间复杂度为O(1);快速排序平均时间复杂度为O(n log n),空间复杂度为O(log n)。文章还介绍了算法选择、分而治之及空间换时间等优化策略,帮助你在大数据挑战中游刃有余。
60 4
|
4月前
|
机器学习/深度学习 算法 搜索推荐
从理论到实践,Python算法复杂度分析一站式教程,助你轻松驾驭大数据挑战!
【7月更文挑战第22天】在大数据领域,Python算法效率至关重要。本文深入解析时间与空间复杂度,用大O表示法衡量执行时间和存储需求。通过冒泡排序(O(n^2)时间,O(1)空间)与快速排序(平均O(n log n)时间,O(log n)空间)实例,展示Python代码实现与复杂度分析。策略包括算法适配、分治法应用及空间换取时间优化。掌握这些,可提升大数据处理能力,持续学习实践是关键。
125 1
下一篇
无影云桌面