基于梯度提升树回归模型的房地产价格估计

2024-06-06 13:12

本文主要是介绍基于梯度提升树回归模型的房地产价格估计,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

  • 1. 作者介绍
  • 2. 梯度提升树回归算法介绍
    • 2.1 算法原理
    • 2.2 算法讲解与分析
  • 3. 实验过程
    • 3.1 数据集介绍
    • 3.2 代码介绍
    • 3.3 完整代码实现
    • 3.4 测试结果
  • 参考文献

1. 作者介绍

雷强,男,西安工程大学电子信息学院,2023级研究生
研究方向:机器视觉与人工智能
电子邮件:3160698422@qq.com

孙思伟,男,西安工程大学电子信息学院,2023级研究生
研究方向:深度强化学习与人工智能
电子邮件:sunsiwei0109@163.com

2. 梯度提升树回归算法介绍

2.1 算法原理

梯度提升树回归算法的原理是通过迭代地训练多棵决策树,每棵树基于前一棵树的残差进行学习,以最小化预测误差,并将它们的预测结果进行加权融合,从而提高对连续变量的预测精度。
当使用梯度提升树回归算法(Gradient Boosting Decision Tree, GBDT)来估计房地产价格时,原理是通过迭代地训练多棵决策树模型,并将它们的预测结果进行加权融合。在每一轮迭代中,都会基于前一轮模型对房地产价格的预测残差来训练一棵新的决策树,这个残差表示了真实价格与当前模型预测价格之间的差异。通过这种方式,GBDT能够逐步减小预测误差,提升对房地产价格的预测准确性。这个过程不断重复,直至达到预设的迭代次数或模型性能提升不再显著,最终得到一个强大的预测模型,能够有效地估计房地产价格。

2.2 算法讲解与分析

在这里插入图片描述
在这里插入图片描述

3. 实验过程

3.1 数据集介绍

数据集来源于UCI机器学习存储库。这个存储库包含了从各种领域收集的真实世界和模拟生成的数据集,用于支持机器学习算法的开发、测试、评估和比较。选取台湾新北市新店区房地产数据进行房地产价格估计。
为了使估计结果更准确,这里使用一个包含交易日期、房龄、到最近捷运站的距离、便利店的数量、经度、维度、多个特征和对应房屋销售价格的数据集。这些数据集会包含大量的样本和多个特征,以便机器学习算法能够学习到房屋价格与特征之间的复杂关系
在这里插入图片描述
根据房地产数据表,选取以下6个特征:
X1交易日期(时间)
X2房龄(年)
X3到最近捷运站的距离(米 )
X4便利店数量(个)
X5经度(度)
X6维度(度)
Y商品房平均销售价格(万元/平方米)

3.2 代码介绍

先查看基本数据分布:
在这里插入图片描述
划分数据集:
在这里插入图片描述
在这里插入图片描述
得到特征重要性:
在这里插入图片描述
构建梯度回归树模型预测房价:
在这里插入图片描述
对模型进行评估:
在这里插入图片描述

3.3 完整代码实现

import pandas as pd  
import numpy as np  
from sklearn.ensemble import GradientBoostingRegressor  
from sklearn.metrics import mean_squared_error, mean_absolute_error  
import matplotlib.pyplot as plt  
from sklearn.model_selection import train_test_split  # 读取数据数据,查看数据基本分布 
house = pd.read_csv('D:/AAD/datads.csv', index_col=0, encoding='gb2312')  
print(house.shape)  
print(house.describe())  # 清理列名  
house.columns = [col.strip() for col in house.columns]  # 定义特征和标签  
features_tree = ['X1', 'X2', 'X3', 'X4', 'X5', 'X6']  
target = 'Y'  # 检查特征是否存在于数据集中  
if not all(feature in house.columns for feature in features_tree):  print("以下列名在 DataFrame 中不存在:", set(features_tree) - set(house.columns))  
else:  # 划分数据集为训练集和测试集  house_train, house_test = train_test_split(house, test_size=0.3, random_state=0)  print('训练集描述性统计:')  print(house_train[features_tree + [target]].describe().round(2))  print('测试集描述性统计:')  print(house_test[features_tree + [target]].describe().round(2))  # 提取特征和标签  X_train = house_train[features_tree]  y_train = house_train[target]  X_test = house_test[features_tree]  y_test = house_test[target]  # 构建梯度提升树回归模型预测房价gbr = GradientBoostingRegressor(n_estimators=100, learning_rate=0.1, max_depth=3, random_state=0)  gbr.fit(X_train, y_train)  # 在训练集和测试集上进行预测  y_gbr_train = gbr.predict(X_train)  y_gbr_test = gbr.predict(X_test)  # 评估模型在测试集上的性能  mse_test = mean_squared_error(y_test, y_gbr_test)  mae_test = mean_absolute_error(y_test, y_gbr_test)  print(f"测试集均方误差: {mse_test:.2f}")  print(f"测试集平均绝对误差: {mae_test:.2f}")  # 得到特征重要性  plt.barh(range(len(features_tree)), gbr.feature_importances_, tick_label=features_tree)  plt.xlabel('Feature Importance')  plt.ylabel('Feature')  plt.title('Feature Importances')  plt.show()  # 使用训练好的模型对原始数据集进行预测data_pre = pd.read_csv('D:/AAD/datads.csv', index_col=0, encoding='gb2312')  data_pre.columns = [col.strip() for col in data_pre.columns]  gbr_pre = gbr.predict(data_pre[features_tree])  # 创建结果DataFrame  house_result_reg = pd.DataFrame()  house_result_reg[u'梯度提升树回归预测'] = gbr_pre  house_result_reg[u'真实值'] = data_pre[target]  # 注意:这里的真实值可能包含训练集数据  # 打印结果DataFrame的前几行  print(house_result_reg.head())  # 保存预测结果到CSV文件  house_result_reg.to_csv('D:/AAD/datads_predictions_.csv', encoding='gb2312')

3.4 测试结果

在这里插入图片描述

参考文献

[1]用python构建线性回归和决策树模型实现房价预测
[2]基于梯度提升树实现波士顿房价预测
[3]梯度提升树(GBDT)原理小结

这篇关于基于梯度提升树回归模型的房地产价格估计的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1036202

相关文章

0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型的操作流程

《0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeekR1模型的操作流程》DeepSeekR1模型凭借其强大的自然语言处理能力,在未来具有广阔的应用前景,有望在多个领域发... 目录0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型,3步搞定一个应

Deepseek R1模型本地化部署+API接口调用详细教程(释放AI生产力)

《DeepseekR1模型本地化部署+API接口调用详细教程(释放AI生产力)》本文介绍了本地部署DeepSeekR1模型和通过API调用将其集成到VSCode中的过程,作者详细步骤展示了如何下载和... 目录前言一、deepseek R1模型与chatGPT o1系列模型对比二、本地部署步骤1.安装oll

Spring AI Alibaba接入大模型时的依赖问题小结

《SpringAIAlibaba接入大模型时的依赖问题小结》文章介绍了如何在pom.xml文件中配置SpringAIAlibaba依赖,并提供了一个示例pom.xml文件,同时,建议将Maven仓... 目录(一)pom.XML文件:(二)application.yml配置文件(一)pom.xml文件:首

如何在本地部署 DeepSeek Janus Pro 文生图大模型

《如何在本地部署DeepSeekJanusPro文生图大模型》DeepSeekJanusPro模型在本地成功部署,支持图片理解和文生图功能,通过Gradio界面进行交互,展示了其强大的多模态处... 目录什么是 Janus Pro1. 安装 conda2. 创建 python 虚拟环境3. 克隆 janus

本地私有化部署DeepSeek模型的详细教程

《本地私有化部署DeepSeek模型的详细教程》DeepSeek模型是一种强大的语言模型,本地私有化部署可以让用户在自己的环境中安全、高效地使用该模型,避免数据传输到外部带来的安全风险,同时也能根据自... 目录一、引言二、环境准备(一)硬件要求(二)软件要求(三)创建虚拟环境三、安装依赖库四、获取 Dee

DeepSeek模型本地部署的详细教程

《DeepSeek模型本地部署的详细教程》DeepSeek作为一款开源且性能强大的大语言模型,提供了灵活的本地部署方案,让用户能够在本地环境中高效运行模型,同时保护数据隐私,在本地成功部署DeepSe... 目录一、环境准备(一)硬件需求(二)软件依赖二、安装Ollama三、下载并部署DeepSeek模型选

使用DeepSeek API 结合VSCode提升开发效率

《使用DeepSeekAPI结合VSCode提升开发效率》:本文主要介绍DeepSeekAPI与VisualStudioCode(VSCode)结合使用,以提升软件开发效率,具有一定的参考价值... 目录引言准备工作安装必要的 VSCode 扩展配置 DeepSeek API1. 创建 API 请求文件2.

Golang的CSP模型简介(最新推荐)

《Golang的CSP模型简介(最新推荐)》Golang采用了CSP(CommunicatingSequentialProcesses,通信顺序进程)并发模型,通过goroutine和channe... 目录前言一、介绍1. 什么是 CSP 模型2. Goroutine3. Channel4. Channe

C#使用yield关键字实现提升迭代性能与效率

《C#使用yield关键字实现提升迭代性能与效率》yield关键字在C#中简化了数据迭代的方式,实现了按需生成数据,自动维护迭代状态,本文主要来聊聊如何使用yield关键字实现提升迭代性能与效率,感兴... 目录前言传统迭代和yield迭代方式对比yield延迟加载按需获取数据yield break显式示迭

Python基于火山引擎豆包大模型搭建QQ机器人详细教程(2024年最新)

《Python基于火山引擎豆包大模型搭建QQ机器人详细教程(2024年最新)》:本文主要介绍Python基于火山引擎豆包大模型搭建QQ机器人详细的相关资料,包括开通模型、配置APIKEY鉴权和SD... 目录豆包大模型概述开通模型付费安装 SDK 环境配置 API KEY 鉴权Ark 模型接口Prompt