基于python的回归与集成算法进行房价预测

项目介绍

在房地产大热的时代,很多人倾尽一生的财富来获取一套房子,很多时候客户会根据地理位置去选取某一小区来购置房产,那么在特定的地理位置上,什么样的房型是最热门的,什么样的房子才是具有性价比的,开发商该怎么去设计户型以及改变户型比例才能获取最好的销量以及最丰厚的利润,本次项目通过爬取知名网站房天下的数据,涵盖房子的单价、朝向、面积、户型等信息。然后使用各种回归算法(随机森林、线性回归、lasso回归、岭回归、梯度提升树)来建立房价预测模型。

一、数据获取

数据的获取方式主要是使用python里的request库进行网页的爬取,然后使用beautifulsoup对内容进行解析,使用的目标网站是房天下广州市海珠区的部分(https://gz.esf.fang.com/house-a074/),该网站的房子信息包涵户型、建筑面积、单价、朝向、楼层情况和装修情况。注意房天下网站有反爬措施,可以通过设置休眠时间来避开,以及使用库去获取网页会重定向到另一个网页,通过解析网页才可以获得正确的目标地址。

import pandas as pd
import time
import requests as req
from bs4 import BeautifulSoup
headers = {
   
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36',
}
def get_true_url(old_url):
    '''获得正确的url'''
    # print(old_url)
    r = req.get(url=old_url, headers=headers)
    if r'<title>跳转...</title>' in r.text:
        soup = BeautifulSoup(r.text, 'lxml')
        new_url = soup.find(name='a', attrs={
   'class': 'btn-redir'}).attrs['href']
        return new_url
    return old_url
def getHouseInfo1(url):
    info = {
   }
    soup = BeautifulSoup(req.get(get_true_url(url)).text,"html.parser")
    res = soup.select(".tab-cont-right .trl-item1")
    #获取户型,建筑面积,单价,朝向,楼层,装修情况
    for re in res:
        tmp = re.text.strip().split('\n')
        name = tmp[-1].strip()
        if("朝向" in name):
            name = name.strip("进门")
        if("楼层" in name):
            name = name[0:2]
        if("地上层数" in name):
            name = "楼层"
        if("装修程度" in name):
            name = "装修"
        info[name] = tmp[0].strip()
    #获取小区名称,及总价
    xiaoqu = soup.select(".rcont .blue")[0].text
    info["小区名字"] = xiaoqu
    zongjia = soup.select(".tab-cont-right .trl-item")
    info["总价"] = zongjia[0].text
    return info
#将爬取一页数据的代码放到方法中
domain = "https://gz.esf.fang.com"
city = "/house-a074/"
def pageFun1(i):
    page_url = domain + city +"i3"+ i
    print(page_url)
    res = req.get(get_true_url(page_url))
    soup = BeautifulSoup(res.text,"html.parser")
    houses = soup.select(".shop_list dl")
    page_info_list = []
    #遍历返回的房屋信息
    for house in houses:
        #加try except异常处理
        try:
            info = getHouseInfo1(get_true_url(domain+house.select(".clearfix a")[0]['href']))
            page_info_list.append(info)
            #睡眠0.5秒钟
            time.sleep(1)
        except Exception as e:
            print("---------->",e)
    df = pd.DataFrame(page_info_list)
    return df

查看数据

df.head()#数据前五行

在这里插入图片描述

df.shape#获得数据形状

在这里插入图片描述

df.to_csv('house_data.csv',encoding='ANSI')#将数据导出成csv文件

在这里插入图片描述

二、数据预处理

数据预处理主要市观察是否有缺失值与异常值,对乱序的索引进行整理,以及对数据进行清理,包括转换类型,分解变量,从而能进入模型。

1、缺失值异常值处理

df.info()#首先查看数据大致信息

在这里插入图片描述

df.isnull().sum()#观察缺失值

在这里插入图片描述
可以了解到数据是没有缺失值的

df.index=range(len(df))#整理索引

在这里插入图片描述

df['户型'].value_counts()#查看户型信息

在这里插入图片描述

df=df[df['户型']!='暂无']#将户型暂无的样本删除,达到处理缺失值的效果

在这里插入图片描述

small_list=[]#定义一个空列表来存放数量较少的户型
features_counts=df['户型'].value_counts()#各户型类别数量
l = len(features_counts.values)
for i in range(l):#循环获取数量较少的户型
     if features_counts[i]<10:
         small_list.append(features_counts.index[i])
for i in small_list:#循环删除
     df=df[df['户型']!=i]

在这里插入图片描述

df['户型'].value_counts()

在这里插入图片描述

df['朝向'].value_counts()#查看朝向信息
df['装修'].value_counts()#查看装修信息
df['楼层'].value_counts()#查看楼层信息

在这里插入图片描述

2、清洗变量

df['建筑面积']=df['建筑面积'].map(lambda x: x.replace('平米','')).astype(float)
df['建筑面积']

  • 7
    点赞
  • 74
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
基于Python的链家房屋成交数据分析房价预测云平台的搭建可以按照以下步骤进行: 1. 数据收集和清洗: - 使用Python的爬虫库(如BeautifulSoup、Scrapy)爬取链家网站上的房屋成交数据,并保存为CSV或Excel文件。 - 对收集到的数据进行清洗,去除重复值、缺失值和异常值。 2. 数据存储和管理: - 使用Python的数据库库(如MySQLdb、psycopg2)连接数据库,并创建相应的表格。 - 将清洗后的数据导入数据库中,以便后续的数据分析和预测。 3. 数据分析和可视化: - 使用Python数据分析库(如pandas、numpy)对数据进行统计分析和特征工程。 - 使用Python的可视化库(如matplotlib、seaborn)绘制各种图表,如柱状图、折线图、散点图等,以便更好地理解数据。 4. 房价预测模型的建立: - 使用Python机器学习库(如scikit-learn)选择合适的预测算法,如线性回归决策树、随机森林等。 - 将数据分为训练集和测试集,使用训练集训练模型,并使用测试集评估模型的性能。 - 根据评估结果对模型进行调优,以提高预测准确度。 5. 搭建云平台: - 使用Python的Web框架(如Django)搭建一个基于云的平台,用于展示数据分析房价预测的结果。 - 在平台上设计用户界面,包括数据可视化图表和房价预测功能。 - 将数据分析和预测的代码集成到平台中,以便用户可以通过平台进行数据分析房价预测。 6. 部署和维护: - 将搭建好的云平台部署到云服务器上,确保平台的稳定运行。 - 定期更新数据,并对模型进行重新训练和优化,以保证预测结果的准确性。 - 监控平台的性能和用户反馈,及时修复bug和改进功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值