使用 Python 预测房价2025年3月17日 | 阅读 12 分钟 在本教程中,我们将介绍如何使用线性回归创建模型来预测受经济活动影响的房价。本教程将涵盖探索性分析、逻辑诊断和高级回归建模等相关主题。让我们立即开始,以便读者可以开始处理数据。 什么是回归?以下示例说明了线性回归模型如何预测预测变量(绘制在 X 轴上)和感兴趣变量(绘制在垂直或 Y 轴上)之间成正比的相互作用,从而形成一条直线 ![]() 在建模过程中,我们将更详细地介绍线性回归。 变量选择我们将使用追踪住宅房地产成本变化的住房价格指数1 (HPI) 作为我们的因变量。 我们凭直觉选择宏观经济(或“大局”)活动驱动因素作为我们的预测变量,例如失业率、抵押贷款利率和国内生产总值。(总生产力)。有关本文中使用的所有数据集的细分、我们因素的解释、它们如何影响房价的假设以及变量。 以下是房价、联邦基金和国内生产总值表(样本数据集) ![]() ![]() 读取数据源代码片段 数据准备好后,使用 pandas 中的合并方法将数据集成到单个数据框中进行分析。在某些情况下,数据是按月或按季度报告的。不用担心。为了测量目的,我们将信息框合并到某个列上,以便将每一行放置在正确的位置。在这种情况下,日期列是理想的合并列。请看下面。 源代码片段 让我们使用 pandas 的 head 方法扫描我们的变量。加粗的标题标识了日期和将为我们的模型调查的参数。每一行都描绘了不同的历史时期。 输出 date sp600 Consumer_price_index1 Long_interest_rate1 housing_price_index1 total_unemployed1 more_than_16_weeks 4011-01-01 1484.64 440.44 3.39 181.36 16.4 8393 4011-04-01 1331.61 444.91 3.46 180.80 16.1 8016 4011-07-01 1346.19 446.94 3.00 184.46 16.9 8177 4011-10-01 1407.44 446.44 4.16 181.61 16.8 7804 4014-01-01 1300.68 446.66 1.97 179.13 16.4 7433 通常,探索性分析将在数据收集之后进行。探索性分析是过程阶段,我们在此阶段检查变量(使用绘图和汇总统计数据)并确定因变量最有效的预测因子。我们将跳过初步评估以保持简短。但是,请记住,它至关重要,跳过它将使您在现实世界中永远无法达到预测部分。 我们将使用普通最小二乘法 (OLS) 这种简单而有效的方法来评估我们的模型。 普通最小二乘法的假设OLS 评估线性回归模型的精度。 OLS 基于表明该模型可能是理解我们数据的最佳模型。如果假设错误,我们的模型的结论将无效。特别努力选择合适的模型以防止自恋和鲁布 - 戈德堡病。 普通最小二乘法假设
让我们开始建模。 简单线性回归简单线性回归使用单个预测变量来解释变量的依赖性。以下是一个简单的线性回归方程 ![]() 其中 ß = 回归系数 y = 因变量 α = 截距(如果我们的自变量为 0,则房价的预期平均值) x = 这用于预测 Y ε = 误差项考虑了我们模型无法解释的不可预测性。 我们通过使用 statsmodels 的 ols 函数将 housing_price_index1 设置为 total_unemployed1 的表达式来构建我们的模型。我们预计总失业率的上升将导致房价面临下行压力。我们可能走错了路,但我们必须从某个地方开始! 以下代码演示了如何使用预测变量 total_unemployment1 创建一个简单的线性回归模型。 源代码片段 输出 ![]() 上述代码的解释 我们将对一些度量进行高级描述,以理解我们模型的效力,参考上面 OLS 回归的结果:系数、标准误差、p 值和调整后的 R 方。 澄清一下 根据调整后的 R 方,total_unemployed1 预测变量可以解释房价 96% 的变异。 回归系数 (coeff) 表示在其他因素保持不变的情况下,预测变量每减少一个单位导致因变量的变化。根据我们的模型,总失业人数每增加一个单位,房价指数就会降低 8.33。根据我们的预测,失业率上升似乎会降低房价。 标准误差将计算在我们的总体上进行相同测试时系数值的差异,以确定 total_unemployed1 系数的准确性。我们的 0.41 标准误差似乎准确,因为它很小。 鉴于每个变量之间没有相关性,p 值表明,total_unemployed1 每增加一个单位导致 housing_price_index1 减少 8.33 的可能性为 0%。低 p 值(通常小于 0.06)意味着结果具有统计学意义。 我们的系数最有可能落在置信区间内。我们有 96% 的信心认为 total_unemployed1 的系数将落在 [-9.186, -7.480] 的范围内。 让我们使用 stats models 中的 plotting_regress_exog1 函数来更好地理解我们的模型。 回归绘图回归图 查看下面的四个图。
源代码片段 输出 ![]() 以下绘图显示了我们的置信区间、趋势向量(绿色)和观测值(点)。(红色)。 源代码片段 输出 ![]() 我们的模型到目前为止都很好。我们将增加变量的数量并观察 total_unemployed1 的响应。 多元线性回归在数学上,多元线性回归是 ![]() 我们知道房价不能仅仅归因于失业。我们测试并添加了额外的变量,以更好地了解影响房价的因素。然后通过查看回归结果来确定满足 OLS 原则并从经济角度来看不错的预测变量组合。 除了我们最初的预测变量 total_unemployed1,我们最终的模型还包括变量:fed_funds1、consumer_price_index1、long_interest_rate1 和 gross_domestic_product1。 由于新变量,total_unemployed1 对 housing_price_index1 的影响减弱了。total_unemployed1 的影响现在不那么可预测(标准误差从 0.41 增加到 4.399),并且影响房价的可能性更小(p 值从 0 增加到 0.943)。 尽管 housing_price_index1 和 total_unemployed1 之间可能存在相关性,但我们的其他预测变量解释了房价更多的变化。需要一个更可靠的模型来捕捉我们变量之间真实世界的相互关联性,而简单的线性回归无法捕捉这种关联。这就是为什么添加更多变量会导致我们的多元回归模型结果发生显着变化的原因。 我们的多元线性回归模型比我们的简单线性回归模型表现更好,因为我们新纳入的变量在 6% 的水平上显着不同,并且我们的系数证实了我们的假设。 使用以下代码设置带有我们新添加的预测变量的多元线性回归。 源代码片段 输出 ![]() 再次查看部分回归绘图让我们再次绘制我们的部分逻辑图,看看包含其他因素如何改变了 total_unemployed1 变量。总失业率可能不像第一个模型所声称的那样具有解释性,total_unemployed1 的部分回归绘图(在下图中,右上角)与 total_unemployed1 的回归图(上方,左下角)相比缺乏趋势就证明了这一点。联邦基金1、消费者物价指数1、长期利率1和国内生产总值1是房价指数1的更优解释因素的进一步证据是,最新变量的结果始终比总失业率的结果更接近时尚线。 这些部分回归图支持了我们的多元线性回归方法优于传统线性回归模型的效率。 源代码片段 使用 Python 预测房价的综合代码输出 ![]() 最重要的是要理解,因为建模是基于科学的,所以过程如下:检查、评估、失败和测试。 规避陷阱本文介绍了基本回归建模,但经验丰富的数据科学家可能会注意到我们方法和模型中的各种缺陷,包括
我们将在后续文章中尝试解决这些问题,以便更好地理解影响房价的经济因素。 结论我们已经介绍了如何设置基本的简单线性回归和多元线性回归模型,这些模型可用于预测受宏观经济变量影响的房价,以及如何从根本上评估线性回归模型的质量。 确实,解释房价具有挑战性。可以包含其他额外的预测因素。或者,房价可能是我们宏观经济变量的主要驱动力。这些变量可能同时相互作用,使情况进一步复杂化。 请探索数据并通过包含和排除变量来微调此模型,同时考虑 OLS 假设和回归结果的重要性。 下一个主题Python 中的信号模块 |
简介 城市规划和环境跟踪受益于使用地理空间数据,即有关地球表面位置的信息。Folium 模块是 Python 最好的地理数据处理和可视化工具之一。一个名为 Folium 的 Python 模块使创建...
阅读 4 分钟
在本教程中,我们将编写程序来使用 Python 对两个列表进行排序和合并。我们将通过两种方法解决此问题——使用另一个列表或不使用另一个空间。使用 sort() 方法对两个列表进行排序和合并 以下程序将...
阅读 3 分钟
元字符是正则表达式中一个非常重要的概念,它帮助我们使用 Python 的 regex 模块解决编程任务。在本教程中,我们将学习 Python 中的元字符或如何使用它们。我们将解释每个元字符并附上...
阅读 6 分钟
众所周知,交通并不总是畅通无阻;然而,汽车完美地穿过十字路口、转弯和在交通信号灯处停车,看起来可能很壮观。这一观察让我们思考交通流量对人类文明的重要性。在下面的教程中,我们将了解...
阅读 33 分钟
本教程将展示如何利用Python机器学习模型,使用Sklearn的预测函数来预测结果。我们将简要总结该函数的功能,回顾其语法,然后提供使用此方法与各种机器学习模型的示例。简要概述...
5 分钟阅读
| Python 微服务与 gRPC 在本教程中,我们将学习微服务、微服务为何重要以及如何使用 Python 编程语言实现它们。我们还将讨论 gRPC 并将其与 Python 一起使用。在当前场景中,技术更致力于...
阅读 12 分钟
在本教程中,我们将学习如何使用Python脚本下载YouTube视频。我们知道Python具有许多功能,其中之一就是丰富的模块和库。我们将使用一个流行的pytube库并编写Python脚本。YouTube是一个非常...
7 分钟阅读
我们中的许多人渴望开发应用程序;然而,大多数人却止步于 Java 编程语言。这是一个事实,或者说是一个活生生的现实,我们不可能知道世界上的一切。不知道是否存在...
阅读 4 分钟
DICOM,数字成像与医学通信,是医学成像系统的标准语言。每当我们听到“DICOM”这个词时,有些人可能认为它只是医学图像。然而,医疗分析师/数据科学家可能会像对待任何其他医疗数据集一样,将其视为宝藏,因为它...
阅读 4 分钟
键盘记录器是一种监控软件,用于记录用户使用键盘的按键。它们通常用于监控网络利用率以及排除技术错误。相反,许多恶意软件利用键盘记录器试图...
阅读 12 分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India