多元线性回归算法预测房价
目录
一.多元线性回归
1.定义
2.房价问题分析
二.使用Excel进行多元先回归预测
1.导入数据
2.完善数据集
1.删除数据偏差
2. 处理非数据数值
3.Excel做线性回归
三.用jupyter+sklearn做线性回归练习
四、用线性回归模型的统计学库实现
五.总结
一.多元线性回归
1.定义
在回归分析中,如果有两个或两个以上的自变量,就称为多元回归。事实上,一种现象常常是与多个因素相联系的,由多个自变量的最优组合共同来预测或估计因变量,比只用一个自变量进行预测或估计更有效,更符合实际。因此多元线性回归比一元线性回归的实用意义更大。
2.房价问题分析
对未来房价进行预测,在一定程度上影响着社会经济的发展。广义上讲,精确的房价预测有助于国家对市场房价走势的宏观调控,小范围来讲,未来房价预测是企业战略规划的一部分,对于消费者而言,房价预测为个人经济的合理规划起到了积极作用。由于房屋售价与多因素有关,并且房屋价格与影响房价的一些因素存在线性关系,所以选取多元线性回归模型研究该问题较为合适。
本次课题研究通过对某段时间某地区的已售房价数据进行线性回归分析,探索影响房价高低的主要因素,并对这些影响因素的影响程度进行分析,利用分析得到的数据,对未来房价的趋势和走向进行预测.
二.使用Excel进行多元先回归预测
1.导入数据
2.完善数据集
1.删除数据偏差
即删除不合理的数据
在beedroom中存在0的数值,这明显是不合理的,故筛选出来删除
框选删除即可
2. 处理非数据数值
线性回归中经常会遇到非数值型数据,即分类型数据,比如性别、所属省份、专业类型等等
分类型数据无法量化,一般会采用哑数据进行处理
如某个数据分为A、B、C三类,即可采用两个哑数据a,b
类型为A时,a=1,b=0
类型为B时,a=0,b=1
类型为C时,a=0,b=0
不使用a,b,c三个哑数据,是因为如果哑数据个数与分类数相同时,恒有a+b+c=1,会存在多重共线性问题
所以在N分类时,一般使用N-1个哑数据
1.在我们的数据集中neighborhood和style栏是非数值数据,在neighborhood一栏中将A,B,C以二进制编码表示为10,01,00,也就是十进制的2,1,0。
2.在style一栏中同理可得ranch,victorian,lodge为2,1,0。
方法:点击菜单栏的开始,找到查找和选择,点击选择替换,根据上述替换数据
3.Excel做线性回归
输出结果
通过P-value一栏可以得到房屋面积和价格的相关性最强。
根据表中数据得到回归方程:
y= -0.45723 x1 -28426 x2 +345.9623 x3 +4509.576 x4 -2915.15 x5 +2128.176 x6
r²=0.723794
三.用jupyter+sklearn做线性回归练习
未处理数据的代码
#引入包
import pandas as pd
import numpy as np
import seaborn as sns
from sklearn import datasets
from sklearn.linear_model import LinearRegressiondf = pd.read_csv('D:\\**\\house_prices.csv')#读取文件,此处为自己的文件的路径
df.info()#显示列名和数据类型类型
df.head(6)#显示前n行,n默认为5#取出自变量
data_x=df[['area','bedrooms','bathrooms']]# x
data_y=df['price']# y# 进行多元线性回归
model=LinearRegression()
l_model=model.fit(data_x,data_y)
print('参数权重')
print(model.coef_)
print('模型截距')
print(model.intercept_)
输出
处理数据后的代码
#引入包
import pandas as pd
import numpy as np
import seaborn as sns
from sklearn import datasets
from sklearn.linear_model import LinearRegressiondf = pd.read_csv('D:\\**\\house_prices.csv')#读取文件,此处为自己的文件的路径
df.info()#显示列名和数据类型类型
df.head(6)#显示前n行,n默认为5# 异常值处理
# ================ 异常值检验函数:iqr & z分数 两种方法 =========================
def outlier_test(data, column, method=None, z=2):""" 以某列为依据,使用 上下截断点法 检测异常值(索引) """""" full_data: 完整数据column: full_data 中的指定行,格式 'x' 带引号return 可选; outlier: 异常值数据框 upper: 上截断点; lower: 下截断点method:检验异常值的方法(可选, 默认的 None 为上下截断点法),选 Z 方法时,Z 默认为 2"""# ================== 上下截断点法检验异常值 ==============================if method == None:print(f'以 {column} 列为依据,使用 上下截断点法(iqr) 检测异常值...')print('=' * 70)# 四分位点;这里调用函数会存在异常column_iqr = np.quantile(data[column], 0.75) - np.quantile(data[column], 0.25)# 1,3 分位数(q1, q3) = np.quantile(data[column], 0.25), np.quantile(data[column], 0.75)# 计算上下截断点upper, lower = (q3 + 1.5 * column_iqr), (q1 - 1.5 * column_iqr)# 检测异常值outlier = data[(data[column] <= lower) | (data[column] >= upper)]print(f'第一分位数: {q1}, 第三分位数:{q3}, 四分位极差:{column_iqr}')print(f"上截断点:{upper}, 下截断点:{lower}")return outlier, upper, lower# ===================== Z 分数检验异常值 ==========================if method == 'z':""" 以某列为依据,传入数据与希望分段的 z 分数点,返回异常值索引与所在数据框 """""" paramsdata: 完整数据column: 指定的检测列z: Z分位数, 默认为2,根据 z分数-正态曲线表,可知取左右两端的 2%,根据您 z 分数的正负设置。也可以任意更改,知道任意顶端百分比的数据集合"""print(f'以 {column} 列为依据,使用 Z 分数法,z 分位数取 {z} 来检测异常值...')print('=' * 70)# 计算两个 Z 分数的数值点mean, std = np.mean(data[column]), np.std(data[column])upper, lower = (mean + z * std), (mean - z * std)print(f"取 {z} 个 Z分数:大于 {upper} 或小于 {lower} 的即可被视为异常值。")print('=' * 70)# 检测异常值outlier = data[(data[column] <= lower) | (data[column] >= upper)]return outlier, upper, loweroutlier, upper, lower = outlier_test(data=df, column='price', method='z')#获得异常数据
outlier.info(); outlier.sample(5)
df.drop(index=outlier.index, inplace=True)#丢弃异常数据#取出自变量
data_x=df[['area','bedrooms','bathrooms']]
data_y=df['price']# 进行多元线性回归并得出结果
model=LinearRegression()
l_model=model.fit(data_x,data_y)
print('参数权重')
print(model.coef_)
print('模型截距')
print(model.intercept_)
输出结果
四、用线性回归模型的统计学库实现
代码
#引入包
import pandas as pd
import numpy as np
import seaborn as sns
from sklearn import datasets
from sklearn.linear_model import LinearRegression
from statsmodels.formula.api import ols #相比前面新引入的包df = pd.read_csv('D:\\**\\house_prices.csv')#读取文件,此处为自己的文件的路径
df.info()#显示列名和数据类型类型
df.head(6)#显示前n行,n默认为5#不使用虚拟变量
lm = ols('price ~ area + bedrooms + bathrooms', data=df).fit()
lm.summary()
输出结果
查看相关性
def vif(df, col_i):"""df: 整份数据col_i:被检测的列名"""cols = list(df.columns)cols.remove(col_i)cols_noti = colsformula = col_i + '~' + '+'.join(cols_noti)r2 = ols(formula, df).fit().rsquaredreturn 1. / (1. - r2)
test_data = results[['area', 'bedrooms', 'bathrooms', 'A', 'B']]
for i in test_data.columns:print(i, '\t', vif(df=test_data, col_i=i))
结果
去掉bedroom
# 去掉bedroom再次建模
lm = ols(formula='price ~ area + bathrooms', data=df).fit()
lm.summary()
输出结果
五.总结
通过用线性回归预测房价,理解了误差数据和非合理数据的处理的方法。
六.参考文献
1.多元线性回归算法预测房价_平行叶子的博客-CSDN博客
2.多元线性回归分析_junseven164的博客-CSDN博客
3.数据预处理:数据探索与数据清洗(缺失值+异常值)、数据集成+数据规约+数据变换 - 许愿瓶666666 - 博客园
4.特征共线性问题_沈春旭的博客-CSDN博客
多元线性回归算法预测房价相关推荐
- 多元线性回归算法预测房价——Excel、jupyter+sklearn
嘿!我是目录 一.多元线性回归 1. 定义 2. 数据清洗 2.1 缺失值处理 2.2 异常值(离群点)处理 3. 特征共线性问题 二.用Excel做房价预测线性回归 1. 配置Excel 2. 完善 ...
- 机器学习(二)多元线性回归算法预测房价
机器学习(二)多元线性回归算法预测房价 本篇文章已作为重庆交通大学19级微课<机器视觉>大作业提交,提前声明,避免抄袭误会 "garbage in garbage out&quo ...
- 多元线性回归算法预测房价【人工智能】
目录 一.理论知识 二.Excel多元线性回归 1.数据集 2.数据分析 三.借助Sklearn库实现多元线性回归 1.基础包与数据导入 2.变量探索 3.分析数据 4.建立线性回归模型 5.Skle ...
- jupyter多元线性回归算法预测房价
目录 一.概念 二.Excel预测房价 三.Python预测房价(不用Sklearn) 1.上传数据文件 2.导入数据 3.数据清洗 4.热力图 5.多元线性回归建模 6.模型末尾提示可能存在多元共线 ...
- 多元线性回归之预测房价
目录 一.多元线性回归 二.用EXCEL来做 三.Juypter中分析(不使用Sklearn) 四. 模型优化 五. 总结 六 . 参考链接 一.多元线性回归 在回归分析中,如果有两个或两个以上的自变 ...
- 大数据分析案例-基于多元线性回归算法预测学生期末成绩
- 【经典案例】 | 多元线性回归模型预测房价(附Python代码与数据)
- 基于线性回归算法的房价预测项目
1. 查看数据的基本信息 import numpy as np import pandas as pd import matplotlib.pyplot as plt import seaborn a ...
- python 预测算法_通过机器学习的线性回归算法预测股票走势(用Python实现)
本文转自博客园,作者为hsm_computer 原文链接:https://www.cnblogs.com/JavaArchitect/p/11717998.html在笔者的新书里,将通过股票案例讲述P ...
最新文章
- Django基础—— 1.WEB框架介绍
- matlab 度分秒转换成度_如何利用matlab统一处理照片亮度对比度
- mysql版本号超买_MySQL处理高并发,防止库存超卖
- GIt——怎样克隆远程仓库到本地(敲详细)
- vi编辑器的学习使用(二十)
- vs已停止工作的解决方案
- linux脚本制定java堆大小_Java使用比堆大小更多的内存(或正确的Docker内存限制大小)...
- Vue 2.0 + Vue Router + Vuex 后台管理系统的骨架
- Obsolete属性用法
- Windows10 隐藏更新小工具
- ie浏览器兼容模式怎么设置?
- cass转换jpg_怎么把CAD图转换成清晰的JPG等其他格式图形文件
- ps 抠图 修改背景颜色
- 软件使用-如何卸载360安全客户端
- 付呗聚合支付快速教程 基础篇②——FubeiUtils付呗工具类(封装参数和签名规则)
- Python UnboundLocalError: local variable ‘str‘ referenced before assignment
- macOS Monterey 12.2 (21D49) 虚拟机 IOS 镜像
- 太极图(HTML+CSS),无动态效果
- 【前端】js实现图片自适应
- 如何解决 使用matplotlib.finance获取雅虎财经网站股票数据 报错?