记录一次使用线性回归和多项式回归为房价定价
2022年6月,笔者准备去北京海淀某地租房,看中了一个小区的房子。笔者囊中羞涩,只想租一个小一居室,大约44.5平米,但是这个小区的房子,各类大小的房子都有,偏偏44.5平米户型房子的价格没有,房东开价6600,但是笔者并不清楚这个价格是否合理,在笔者的印象中,似乎44平米的房子只要6000就可以租下来了,所以为了探求这个44平米房子的定价到底多少比较合适,笔者准备用数学的方式去解析。这主要是因为笔者最近一直在研究股票的定价和走势,并就职于某投资公司。
一、简单线性回归模型
这个用线性回归去预测房子的价格是最简单直接的想法,因为房子的价格基本上就是正比于房屋的面积。
首先从安居客平台人肉扒一些数据,这里可以做成爬虫形式,但是鉴于笔者第二天就要和房东见面并讨价还价,现在肯定是没有时间搞爬虫了。人肉的部分数据如下:
price area0 6900 54.001 7800 64.002 7500 64.003 8000 79.474 7300 65.005 7500 64.006 8700 78.007 9300 88.008 6800 53.009 7650 61.0010 7500 63.00
使用python的sklearn库做线性回归拟合,代码如下:
data = pd.read_csv("house_lianjia.csv")test_data = pd.read_csv("test_data.csv")X_train = data.iloc[:,1:2]Y_train = data.priceX_test = test_data.iloc[:,1:2]model = LinearRegression()model.fit(X_train, Y_train)a = model.intercept_ # 截距b = model.coef_ # 回归系数Y_pred = model.predict(X_test)print(Y_pred)
结果:
截距= 2943.219869932199 ,回归系数= [68.76643144],说明每平米的价值是68元,截距2943说明这个房子哪怕是0平米,也有约2943元的价值,2943可以视为该地段的溢价。
但是发现我们44.5 平米的房子的预测价格是6000,显然与房东和中介的价格6600相去甚远,似乎我们的模型过于简单了。
二、多元线性回归预测房价
我在猜想,这套房子可能有一些别的因素让它的价格飙升,仔细看了下,这套房子是精装修的,其他的地方,与其他房子并无而致,那么我就加上了是否精装修的数据也作为input参数,继续使用上述代码拟合。
结论:
截距= 2827.2965946558515 ,回归系数= [ 73.18208156 -432.21539661]
房屋预测价格5651元,更低了!
是否装修的回归系数居然是一个负数!也就是说,装修过的房子反而价格更低了,这让我开始怀疑数据有问题。仔细观察数据发现,在安居客平台上,装修和不装修的房子价格差距几乎没有,反而由于不少同平米但是简装的房子要价更高(可能是房东或中介开价不合理),导致反而装修成了负因素。
看来,装修并不能成为影响价格。那么我们怎么改进呢?
三、多项式回归预测房价
这里我突然想到,我的训练数据,普遍在60-80平左右,是相对比较大的房子。而根据常识,(胡诌的数据),3升的可乐要10元,1升的可乐要6元,500ml的可乐不会1升可乐的价格一半而更可能是4元。由于房子本身就是可以提供诸如学区、交通等诸多属性,面积反而是越大,单位面积越便宜,那么聪明的大家一定想到,用多项式去预测房价和面积的关系更合理。这个大概是因为单位面积是一个导数的概念,我们并不能线性的认为这个导数是不变的。
修改代码,将其中的linear regression,改为
poly_reg = PolynomialFeatures(degree = 2) X_poly = poly_reg.fit_transform(X_train)model = linear_model.LinearRegression()model.fit(X_poly, Y_train)
结论:
预测模型 y=3913.375914298715+(0.0*x)+(39.629799812165544*x^2)
预测价格是6090
6090相比于6000还是靠谱一点,但是仍然与房东给出的价格差很远,难道房东要黑心的吃我一笔生意?看了看,确实有很多中介打出了如5500租48平,6000租50平,6500租54平之类的数据。
四、修改修改还是修改
于是我便打定主意,去找房东砍价,我报出了6100元,但是房东说只租6500。似乎结局应该是我们找别的房子,这个交易告吹而结束。
并不是!房东和中介好心的劝我说6500的价格是合理的,我反过来和他们告知,有很多中介,能给出6500租到54平的数据,那我为什么要花6500去租一个45平的数据?
但是他们告诉我,建议去实地看看那些小中介的房子,于是我就跑去和那些小中介交流。
结果令人诧异的是,当我和这些小中介交流的时候,他们纷纷告诉我,有些价格是乱标的,有些只是第一个月的价格,有些根本就是欺诈,他们只是用低价招揽顾客,然后实际并没有那么便宜的房子!而且也有很多小中介会提出,和小中介签约而非和房东直签。这样风险就很大,而且网上也不乏小中介以各种理由扣钱的事例。
所以,这说明我数据本身就是脏的呀!就像股票中有很多噪音,在房子中,也有很多房子的价格是别人乱标的,这些会极大的干扰你的模型。我于是人肉重新从链家和我爱我家这2个大平台上抄录数据,因为这2个大中介起码还是最靠谱的。
使用新的数据重新跑模型,结论如下:
在多项式回归中
y=5029.849501721333+(0.0*x)+(18.31727360194959*x^2)
44平米的房子的预测价格是6485
虽然这2家大平台数据量有点少,不太适合用多项式拟合。
那么重新用线性拟合呢?
截距= 3472.349750926156 ,回归系数= [63.7437833]
44平米的房子的预测价格是6300.
这下结果就非常接近房东和中介的开价了,这说明如果预测有所偏差,可能不是你模型有问题,而是你的数据有问题!
五、终章
鉴于6月是北京的租房旺季,我也意识到房东给出的6500是合理,于是我火速和房东沟通,房东鉴于我长租,一个人,就降到了6400元。而我,知道6400元是合理的价格。
不知道读者有没有对模型有新的修改意见。
记录一次使用线性回归和多项式回归为房价定价相关推荐
- [Python从零到壹] 十二.机器学习之回归分析万字总结全网首发(线性回归、多项式回归、逻辑回归)
欢迎大家来到"Python从零到壹",在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界.所有文章都将结合案例.代码和作者的经验讲 ...
- 【Python】数据分析——直方图、散点图、线性回归、多项式回归、拟合度
目录 绘制直方图 绘制散点图 线性回归 多项式回归 拟合度 数据分析就是在一大批杂乱无章的数据中,运用数字化工具和技术,探索数据内在的结构和规律,构建数学模型,并进行可视化表达,通过验证将模型转化为知 ...
- 线性关系r范围_一个简单线性回归和多项式回归在R中的实现示例
一个简单线性回归和多项式回归在R中的实现示例 常见线性回归的原理就不多说了,大家都懂,就是普通最小二乘法( Ordinary Least Square , OLS )回归法,主要用于简单线性回归.多项 ...
- 机器学习入门实践——线性回归模型(波士顿房价预测)
机器学习入门实践--线性回归模型(波士顿房价预测) 一.背景介绍 给定一个大小为 n n n的数据集 { y i , x i 1 , . . . , x i d } i = 1 n {\{y_{i}, ...
- 机器学习(上)线性回归、多项式回归、标准差、百分位数、数据分布、散点图
大数据实验室第8次打卡 一.机器学习入门 数据集 在计算机中,数据集指的是任何数据集合.它可以是从数组到完整数据库的任何内容. 数据类型 1.数值:离散数据和连续数据.离散数据限制为整数的数字.连续数 ...
- 【机器学习-学习笔记】单/多变量线性回归、多项式回归、逻辑回归、过拟合、正则化
https://blog.csdn.net/m511655654/article/details/81507857 问题 描述 表达式描述 表达式 单变量线性回归 只含有一个特征/输入变量 一元一次表 ...
- 线性回归与多项式回归的区别,如何判断他们的使用场景
前言: 以下内容是个人学习之后的感悟,转载请注明出处~ 总结: 回归属于监督学习的一种的方法, 从连续的数据中得到模型,然后将该数据模型进行预测或者分类. 线性回归模型 把数据通过画图画出来 ...
- 机器学习02线性回归、多项式回归、正规方程
单变量线性回归(Linear Regression with One Variable) 预测器表达式: 选择合适的参数(parameters)θ0 和 θ1,其决定了直线相对于训练集的准确程度. 建 ...
- 简单线性回归和多项式回归
所用数据集women提供了15个年龄在30~39岁间女性的身高和体重信息,想通过身高预测体重. 简单线性回归 结果数据分析: 回归系数(3.45)显著不为0(p<0.001),表明身高每增高1英 ...
最新文章
- 白话经典算法系列之七 堆与堆排序
- 遇到网络问题你是怎么解决的?安琪拉有二招
- 转投AI?英国这所大学决定裁掉数学系,激怒了菲尔兹奖得主
- MPLS 成为连接到云的绝佳方法的4个原因
- Spring IDE 1.2.4发布
- Xshell、Xftp入门使用
- 小猫的java基础知识点汇总(下)
- 剑指企业级云原生,阿里云 CNFS 如何破局容器持久化存储困境
- 【原创】构建高性能ASP.NET站点 第五章—性能调优综述(后篇)
- android 仿ios三级联动,仿iOS的PickerView控件,有时间选择和选项选择并支持一二三级联动效果...
- 【算法】动态规划笔记
- [Go] 通过 17 个简短代码片段,切底弄懂 channel 基础
- 安装索引源码阅读工具 lxr 安装配置初探
- Xshell是做什么用的?Xshell使用教程分享
- origin 去掉白边
- Impala sql实现同比计算(lag函数)
- Thrift生成java、php代码报错Cannot use reserved language keyword: end
- 将7z分卷合并成一个7z文件,然后就可以使用7z或rar软件等打开
- 终于完美解决OneNote无法同步的问题!如此简单!
- python3中aiohttp+asyncio 高效率爬取图片例子,本地保存
热门文章
- c语言程序设计冒泡排序在哪,C语言程序设计冒泡排序教学案例杨进
- 宏碁欲做行业老大 华硕推“巨狮计划”
- 搭建虚拟Web主机(基于域名、IP、端口)
- windows彻底删除idea
- 常用资料备查(1)-长周期行业-(1980-2014)
- 跟着我从零开始入门FPGA(一周入门系列 第一天)
- 友盟+林鸣晖:友盟+产品矩阵助力开发者全面提效
- MTK tpd驱动框架
- abs在c 语言中的作用是什么,abs()函数以及C ++中的示例
- 上汽通用五菱:搭建质量运营平台,实时预警为汽车制造保驾护航