Python数据分析-房价预测及模型分析

摘 要

Python数据分析-房价的影响因素图解icon-default.png?t=L892https://blog.csdn.net/weixin_42341655/article/details/120299008?spm=1001.2014.3001.5501

上一篇OF讲述了房价的影响因素,主要是房屋面积、卫生间数、卧室数。今天,我们通过建立模型来预测房价。机器学习中关于回归算法-数据发展的预测,包含了几个模型:

1、线性回归;

2、岭回归;

3、Lasso回归;

4、多项式回归。

线性回归

线性回归的公式很简单y=ax+b(a是系数,b是截距),OF借这个简单的公式来介绍下机器学习的过程。

1、定义训练集、测试集;

2、选择模型;

3、训练模型;

4、预测和推断。

import numpy as np
import pandas as pd 
from sklearn.model_selection import train_test_split
from sklearn import linear_model
import tkinter as tk
df = pd.read_csv(r"./data/house_data.csv")
#定义训练集、测试集
train_data,test_data = train_test_split(df,train_size = 0.8,random_state=3)
#定义训练数据列
X_train = np.array(train_data['square'], dtype=pd.Series).reshape(-1,1)
y_train = np.array(train_data['price'], dtype=pd.Series)
#定义测试数据列
X_test = np.array(test_data['square'], dtype=pd.Series).reshape(-1,1)
y_test = np.array(test_data['price'], dtype=pd.Series)
#选择模型
lr = linear_model.LinearRegression()
# 训练模型
lr.fit(X_train,y_train)
#预测、推断
pred = lr.predict(X_test)

我们来看下预测模型的线性回归是一条怎样的线(下图红色线):

#图表显示
plt.scatter(X_test, y_test)
plt.plot(X_test,pred,color='r')
plt.show()

从肉眼上看,这条线性回归效果似乎并不太理想,我们用数据说话,计算下该模型的评分如何。我们一般用以下指标来衡量模型的好坏:R2(决定系数)、RMSE(均方根误差)、cv(K折交叉验证系数)。我们先看下该模型的R2评分如何:

#计算模型评分
X = np.array(df['square']).reshape(-1,1)
print(lr.score(X,df['price']))

计算结果:

0.4928363894587906

R2分数越高,说明模型的准确率越高,低于50%的准确率,模型确实不太理想啊。但既然做出来了,我们用该模型预测下房价。

#计算系数和截距
intercept=float(lr.intercept_)
coef=float(lr.coef_)
print ("Average Price for Test Data: {:.3f}".format(y_test.mean()))
print('Intercept: {}'.format(intercept))
print('Coefficient: {}'.format(coef))
# 第1步,实例化object,建立窗口window
window = tk.Tk()
# 第2步,给窗口的可视化起名字
window.title('房价预测计算器-线性回归')
# 第3步,设定窗口的大小(长 * 宽)
window.geometry('500x300')  # 这里的乘是小x
# 第4步,在图形界面上设定输入框控件entry框并放置
a = tk.Label(window, text="房屋面积:")
a.place(x='30',y='50',width='80',height='40')
e = tk.Entry(window, show = None)#显示成明文形式
e.place(x='120',y='50',width='180',height='40')
# 第5步,定义触发事件
def calculate(): # 在鼠标焦点处插入输入内容var = e.get()ans = coef*float(var)+interceptans = '%.2f'%ansresult.set(str(ans))   
# 第6步,创建并放置一个按钮
b1 = tk.Button(window, text='预测房价', width=10, height=2, command=calculate)
b1.place(x='320',y='50',width='100',height='40')
# 第7步,创建并放置一个多行文本框text用以显示
w = tk.Label(window, text="预测房价(万元):")
w.place(x='50',y='150',width='120',height='50')
result = tk.StringVar()
show_dresult = tk.Label(window, bg='white',fg = 'black',font = ('Arail','16'),bd='0',textvariable=result,anchor='e')
show_dresult.place(x='200',y='150',width='250',height='50')
# 第8步,主窗口循环显示
window.mainloop()

岭回归

线性回归呈现了房价与房屋面积的关系,但实际上,房价的影响因素可不止面积,还有卫生间数量和卧室数量,当然还有其他一些特征。我们本次用这3个特征进行岭回归预测。岭回归的公式:

import pandas as pd 
from sklearn.model_selection import train_test_split
from sklearn import linear_model
import tkinter as tk
df_dm = pd.read_csv(r"./data/house_data.csv")
train_data_dm, test_data_dm = train_test_split(df_dm,train_size = 0.8,random_state=3)
features = ['square','bathrooms','bedrooms']
complex_model_R = linear_model.Ridge(alpha=100)
complex_model_R.fit(train_data_dm[features],train_data_dm['price'])
pred1 = complex_model_R.predict(test_data_dm[features])
intercept=float(complex_model_R.intercept_)
coef=list(complex_model_R.coef_)
print('Intercept: {}'.format(intercept))
print('Coefficients: {}'.format(coef))
#计算模型评分
print(complex_model_R.score(df_dm[features],df_dm['price']))
# 第1步,实例化object,建立窗口window
window = tk.Tk()
# 第2步,给窗口的可视化起名字
window.title('房价预测计算器-岭回归')
# 第3步,设定窗口的大小(长 * 宽)
window.geometry('500x350')  # 这里的乘是小x
# 第4步,在图形界面上设定输入框控件entry框并放置
a = tk.Label(window, text="房屋面积:")
a.place(x='30',y='50',width='80',height='40')
e = tk.Entry(window, show = None)#显示成明文形式
e.place(x='120',y='50',width='180',height='40')
b = tk.Label(window, text="卫生间数:")
b.place(x='30',y='120',width='80',height='40')
f = tk.Entry(window, show = None)#显示成明文形式
f.place(x='120',y='120',width='180',height='40')
c = tk.Label(window, text="卧室数:")
c.place(x='30',y='190',width='80',height='40')
g = tk.Entry(window, show = None)#显示成明文形式
g.place(x='120',y='190',width='180',height='40')
# 第5步,定义触发事件
def calculate(): # 在鼠标焦点处插入输入内容var1 = e.get()var2 = f.get()var3 = g.get()ans = coef[0]*float(var1)+coef[1]*float(var2)+coef[2]*float(var3)+interceptans = '%.2f'%ansresult.set(str(ans))   
# 第6步,创建并放置一个按钮
b1 = tk.Button(window, text='预测房价', width=10, height=2, command=calculate)
b1.place(x='350',y='120',width='100',height='40')
# 第7步,创建并放置一个多行文本框text用以显示
w = tk.Label(window, text="预测房价(万元):")
w.place(x='30',y='250',width='120',height='50')
result = tk.StringVar()
show_dresult = tk.Label(window, bg='white',fg = 'black',font = ('Arail','16'),bd='0',textvariable=result,anchor='e')
show_dresult.place(x='200',y='250',width='250',height='50')
# 第8步,主窗口循环显示
window.mainloop()

该模型计算得到的评分稍微要高一些:

0.5068817650838495

我们用该模型预测的房价结果:

Lasso回归

1)Lasso回归的公式:

2)岭回归与Lasso回归的公式是相同的,Lasso回归与岭回归的区别在于:

Many small/medium sized effects: 使用(Ridge)岭回归

Only a few variables with medium/large effect: 使用Lasso回归

3)岭回归也称为L2 正则化,Lasso回归也称为L1正则化

岭回归与Lasso回归最大的区别在于岭回归引入的是L2范数惩罚项,Lasso回归引入的是L1范数惩罚项,Lasso回归能够使得损失函数中的许多θ均变成0,这点要优于岭回归,因为岭回归是要所有的θ均存在的,这样计算量Lasso回归将远远小于岭回归。

Lasso回归最终会趋于一条直线,原因就在于好多θ值已经均为0,而岭回归却有一定平滑度,因为所有的θ值均存在。

模型评分:0.5067363047097421,并不比岭回归高。

多项式回归

多项式回归的公式:

 

该模型OF就不过多介绍了,我们的数据集并不太适合,大家想练习下,可以自行尝试下。

结 语

OF主要介绍了3种模型进行房价预测:线性回归、岭回归、Lasso回归。希望大家能够了解机器语言在生活中的应用场景,活学活用,利用学习到的知识解决些生活/工作中的问题。机器学习大概需要学习以下内容:

1、回归算法:数据发展预测

线性回归、多项式回归

2、分类、聚类算法:预测数据类别

二/多项式分类

KNN、SVM、朴素贝叶斯分类

K-means聚类

3、决策树、随机森林算法:数据分类

Boost、GBDT、XGBOOST

4、NLP自然语言

5、深度学习

NN:神经网络

CNN:卷积神经网络

RNN:循环神经网络

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/37489.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于Python实现对房价的预测

资源下载地址:https://download.csdn.net/download/sheziqiong/85706440 资源下载地址:https://download.csdn.net/download/sheziqiong/85706440 基于Python的房价预测项目 波士顿房价预测 数据集描述 本作品所用数据是一份源于美国某经济学杂志上&…

基于线性回归的房价预测分析

一、分析问题 尝试使用线性回归模型分析波士顿房价数据集,达到可通过房子属性(X)预测房价(y)的效果。 二、获取数据 sklearn.datasets中自带的load_boston数据集。 三、数据探索 1、数据探索 #导入所有可能需要用…

2--Kaggle: 房价预测

2.1 数据导入 首先在Kaggle网站进行注册(如不想参加比赛也许可以不用注册) 比赛地址:House Prices - Advanced Regression Techniques | Kaggle 这里有两种方法将数据放在colab上使用,第二种是直接本地下载后上传到Goole硬盘后&…

数据正态分布化 + 基于回归算法的房价预测(含python代码)

本文用到的美国房屋数据,数据介绍详见我的上一篇文章: 链接:https://pan.baidu.com/s/1wrkzFF87A_Emgid_s7K3aA提取码:2j77 内含两个文件: data_train.csv:训练集数据,包含房价等81个指标&…

Kaggle--房价预测

房价预测 目录 一、认识数据二、定性分析 2.1 属性的意义2.2 属性分析 三、缺失值处理 3.1 缺失值举例3.2 缺失值统计3.3 填充缺失值3.4 格式转换 四、特征分析 4.1 房价分析4.2 房价属性的关系4.3 相关性4.5 特征选取 五、回归前的准备 5.1 特征向量化5.2 测试集预处理 六、回…

基于python的房价可视化预测系统

资源下载地址:https://download.csdn.net/download/sheziqiong/86774405 资源下载地址:https://download.csdn.net/download/sheziqiong/86774405 基于python实现的房价的可视化预测系统 目录 面向用户(买房者、卖房者) 1 面向开发者(数据挖…

chatgpt赋能python:Python抓取数据:从入门到精通

Python抓取数据:从入门到精通 如果你是一名数据分析师或者工程师,那么你一定要学会使用Python抓取数据。Python是一门简单易学、功能强大的编程语言,它具有丰富的第三方库和工具,使得数据抓取变得非常简单。 本篇文章将从入门到…

chatgpt赋能python:Python抓取网络数据的终极指南

Python抓取网络数据的终极指南 随着互联网的迅速发展,抓取网络数据成为了许多公司和个人用Python进行数据分析、机器学习等任务不可或缺的技能。本文将介绍如何使用Python抓取网络数据。 什么是网络抓取? 网络抓取是指通过网络爬虫程序,自…

chatgpt赋能python:Python如何获取数据:从基础到实战

Python 如何获取数据:从基础到实战 Python 是数据科学、机器学习领域的重要工具之一,如何获取数据是使用 Python 的重要一步。在本文中,我们将介绍从基础到实战 Python 如何获取数据。 1. 爬虫 1.1 爬虫的作用 爬虫是一种自动获取网站信息…

富人越富,穷人越穷,我为什么反对PoS

作者 | Hugo Nguyen 编译 | Guoxi 据摩根士丹利年初报告,2017年比特币挖消耗的电力与中东国家卡塔尔年耗电相当,预计2018年的电力需求可能会达到2017年的三倍以上。 大量的电力消耗也带来了很多争议,很多人都尝试在保证安全性的前提下改进共…

低成本开源聊天机器人Vicuna:可达到ChatGPT/Bard 90%以上水平

出品 | OSC开源社区(ID:oschina2013) 大型语言模型 (LLM) 的快速发展彻底改变了聊天机器人系统,从而实现了前所未有的智能水平,譬如 OpenAI 的 ChatGPT。但 ChatGPT 的训练和架构细节仍不清楚,阻碍了该领域的研究和开源…

看看你经常是穷人的思维还是富人的思维:

1、自我认知 穷人:很少想到如何去赚钱和如何才能赚到钱,认为自己一辈子就该这样,不相信会有什么改变。 富人:骨子里就深信自己生下来不是要做穷人,而是要做富人,他有强烈的赚钱意识,这也是他血液…

如何解决电脑所有浏览器都访问不了,但是微信qq都能上的问题

微信能上,但是浏览器用不了, 什么原因呢,一开始以为是学校检测到自己的路由器了,然后开始疯狂倒腾路由器,不断重启,不断重置密码,后来发现都不起作用....................... 从一开始自己就没有想到是配置的问题,因为浏览器是突然就不能用的,自己又没动过电脑的设置,避开了这…

网络正常,qq、微信等其他能正常使用但浏览器无法打开网页

最近遇到电脑网络正常,除了所有浏览器(360、ie、chrome、搜狗等等)无法打开网页,qq、微信以及爱奇艺等其他连网软件都可以正常使用。 如图: 这样的原因一般是你之前使用了代理服务器了,比如使用电脑开wifi、墙了。之后电脑没有自动修改回来,所以才导致这样。 解决方法…

Chrome无法访问网页(在此情况下,Firefox可以访问网页,QQ可以上网)

Chrome无法访问网页 已尝试以下方法: 重置Chrome,恢复原始设置(有些插件可能会导致无法正常打开网页,类似各种梯子),无效在cmd上使用netsh winsock reset,重启电脑,无效使用QQ管家修复功能&am…

qq、微信能打开,网页打不开的解决办法。

昨天下载了VS2022之后。就一直打不开B站,坚信是我自己的我问题。今早还打不开,然后搜了很多办法,原理是那个原理,但是奈何无法成功实践,请教了实验室同学后,终于解决。具体流程如下: 我是 win1…

电脑能打开微信,但是访问不了百度,打不开网页,打不开浏览器!

电脑能打开微信,但是访问不了百度,打不开网页,打不开浏览器! 返回导航页问题现象:解决方案:方案一:方案二: 返回导航页 返回导航页 问题现象: 电脑能打开微信&#xff…

QQ、微信可以正常访问通讯,浏览器无法打开网页

问题描述 电脑网络异常,除了浏览器(360、chrome、搜狗等等)无法打开网页,qq、微信等其他连网软件都可以正常使用。 问题分析 出现这样的原因一般是之前设置了代理服务器,后续没有关闭,导致浏览器还是走代…

大模型新势力:IDEA研究院张家兴入局创业,沈向洋任顾问,首轮估值20亿

衡宇 发自 凹非寺量子位 | 公众号 QbitAI 大模型创业江湖,又来了两位重磅大牛。 张家兴,粤港澳大湾区数字经济研究院(IDEA研究院)讲席科学家、认知计算与自然语言中心负责人,被曝已经启动了创业项目,而他站…

大模型新势力入局:IDEA研究院首席科学家创业,沈向洋院士任顾问,首轮估值20亿...

来源:量子位 大模型创业江湖,又来了两位重磅大牛。 张家兴,粤港澳大湾区数字经济研究院(IDEA研究院)讲席科学家、认知计算与自然语言中心负责人,被曝已经启动了创业项目,而他站在他身后&#xf…