房价预测(基于决策树算法)

2023-11-05

预测波士顿房价


第一步. 导入数据

在这个项目中,将使用波士顿房屋信息数据来训练和测试一个模型,并对模型的性能和预测能力进行评估。我们希望可以通过该模型实现对房屋的价值预估,提高房地产经纪人的工作效率。

此项目的数据集来自kaggle原始数据,未经过任何处理。该数据集统计了2006年至2010年波士顿个人住宅销售情况,包含2900多条观测数据(其中一半是训练数据,即我们的housedata.csv文件)。更多文档信息可以参考作者的文档,以及项目附件data_description.txt文件(特征描述文件)。

下面区域的代码用以载入一些此项目所需的Python库。

# 载入此项目需要的库
import numpy as np
import pandas as pd
import visuals as vs # Supplementary code 补充的可视化代码

import matplotlib.pyplot as plt
import seaborn as sns
plt.style.use('seaborn') # use seaborn style 使用seaborn风格

import warnings
warnings.filterwarnings('ignore')

%matplotlib inline
print('你已经成功载入所有库!')
你已经成功载入所有库!

加载数据

# 载入波士顿房屋的数据集:使用pandas载入csv,并赋值到data_df
data_df = pd.read_csv('housedata.csv')

# 成功载入的话输出训练数据行列数目
print("Boston housing dataset has {} data points with {} variables each.".format(*data_df.shape))
Boston housing dataset has 1460 data points with 81 variables each.


第二步. 数据分析

这个部分,将对已有的波士顿房地产数据进行初步的观察与处理。

由于这个项目的最终目标是建立一个预测房屋价值的模型,需要将数据集分为特征(features)目标变量(target variable)

  • 目标变量'SalePrice',是我们希望预测的变量。
  • 特征:除'SalePrice'外的属性都是特征,它们反应了数据点在某些方面的表现或性质。

观察数据

对波士顿房价的数据进行观察,从而掌握更多数据本身的信息。

(1)使用 head方法 打印并观察前7条data_df数据

# 打印出前7条data_df
print(data_df.head(7))
   Id  MSSubClass MSZoning  LotFrontage  LotArea Street Alley LotShape  \
0   1          60       RL         65.0     8450   Pave   NaN      Reg   
1   2          20       RL         80.0     9600   Pave   NaN      Reg   
2   3          60       RL         68.0    11250   Pave   NaN      IR1   
3   4          70       RL         60.0     9550   Pave   NaN      IR1   
4   5          60       RL         84.0    14260   Pave   NaN      IR1   
5   6          50       RL         85.0    14115   Pave   NaN      IR1   
6   7          20       RL         75.0    10084   Pave   NaN      Reg   

  LandContour Utilities  ... PoolArea PoolQC  Fence MiscFeature MiscVal  \
0         Lvl    AllPub  ...        0    NaN    NaN         NaN       0   
1         Lvl    AllPub  ...        0    NaN    NaN         NaN       0   
2         Lvl    AllPub  ...        0    NaN    NaN         NaN       0   
3         Lvl    AllPub  ...        0    NaN    NaN         NaN       0   
4         Lvl    AllPub  ...        0    NaN    NaN         NaN       0   
5         Lvl    AllPub  ...        0    NaN  MnPrv        Shed     700   
6         Lvl    AllPub  ...        0    NaN    NaN         NaN       0   

  MoSold YrSold  SaleType  SaleCondition  SalePrice  
0      2   2008        WD         Normal     208500  
1      5   2007        WD         Normal     181500  
2      9   2008        WD         Normal     223500  
3      2   2006        WD        Abnorml     140000  
4     12   2008        WD         Normal     250000  
5     10   2009        WD         Normal     143000  
6      8   2007        WD         Normal     307000  

[7 rows x 81 columns]

(2)Id特征对我们训练数据没有任何用处,在data_df中使用drop方法删除'Id'列数据

# 删除data_df中的Id特征(保持数据仍在data_df中,不更改变量名)
data_df.drop('Id',axis=1,inplace=True)

(3)使用describe方法观察data_df各个特征的统计信息:


data_df.describe()
MSSubClass LotFrontage LotArea OverallQual OverallCond YearBuilt YearRemodAdd MasVnrArea BsmtFinSF1 BsmtFinSF2 ... WoodDeckSF OpenPorchSF EnclosedPorch 3SsnPorch ScreenPorch PoolArea MiscVal MoSold YrSold SalePrice
count 1460.000000 1201.000000 1460.000000 1460.000000 1460.000000 1460.000000 1460.000000 1452.000000 1460.000000 1460.000000 ... 1460.000000 1460.000000 1460.000000 1460.000000 1460.000000 1460.000000 1460.000000 1460.000000 1460.000000 1460.000000
mean 56.897260 70.049958 10516.828082 6.099315 5.575342 1971.267808 1984.865753 103.685262 443.639726 46.549315 ... 94.244521 46.660274 21.954110 3.409589 15.060959 2.758904 43.489041 6.321918 2007.815753 180921.195890
std 42.300571 24.284752 9981.264932 1.382997 1.112799 30.202904 20.645407 181.066207 456.098091 161.319273 ... 125.338794 66.256028 61.119149 29.317331 55.757415 40.177307 496.123024 2.703626 1.328095 79442.502883
min 20.000000 21.000000 1300.000000 1.000000 1.000000 1872.000000 1950.000000 0.000000 0.000000 0.000000 ... 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 1.000000 2006.000000 34900.000000
25% 20.000000 59.000000 7553.500000 5.000000 5.000000 1954.000000 1967.000000 0.000000 0.000000 0.000000 ... 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 5.000000 2007.000000 129975.000000
50% 50.000000 69.000000 9478.500000 6.000000 5.000000 1973.000000 1994.000000 0.000000 383.500000 0.000000 ... 0.000000 25.000000 0.000000 0.000000 0.000000 0.000000 0.000000 6.000000 2008.000000 163000.000000
75% 70.000000 80.000000 11601.500000 7.000000 6.000000 2000.000000 2004.000000 166.000000 712.250000 0.000000 ... 168.000000 68.000000 0.000000 0.000000 0.000000 0.000000 0.000000 8.000000 2009.000000 214000.000000
max 190.000000 313.000000 215245.000000 10.000000 9.000000 2010.000000 2010.000000 1600.000000 5644.000000 1474.000000 ... 857.000000 547.000000 552.000000 508.000000 480.000000 738.000000 15500.000000 12.000000 2010.000000 755000.000000

8 rows × 37 columns


数据预处理

数据不可能是百分百的‘干净’数据(即有用数据),总会在采集整理时有些”失误“、“冗余”,造成“脏”数据,所以要从数据的正确性和完整性这两个方面来清理数据。

  • 正确性:一般是指有没有异常值,比如我们这个数据集中作者的文档所说:
    I would recommend removing any houses with more than 4000 square feet from the data set (which eliminates these five unusual observations) before assigning it to students.
    建议我们去掉数据中'GrLivArea'中超过4000平方英尺的房屋(具体原因可以参考文档),当然本数据集还有其他的异常点,这里不再处理。
  • 完整性:采集或者整理数据时所产生的空数据造成了数据的完整性缺失,通常我们会使用一定的方法处理不完整的数据。在本例中,我们使用以下两种方法,一是丢弃数据,即选择丢弃过多空数据的特征(或者直接丢弃数据行,前提是NA数据占比不多),二是填补数据,填补的方法也很多,均值中位数众数填充等等都是好方法。

正确性方面

以下代码将使用matplotlib库中的scatter方法 绘制'GrLivArea''SalePrice'的散点图,x轴为'GrLivArea',y轴为'SalePrice',观察数据**

# 绘制散点图
plt.scatter(data_df['GrLivArea'],data_df['SalePrice'])
plt.xlabel('GrLivArea')
plt.ylabel('SalePrice')
plt.show(
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

房价预测(基于决策树算法) 的相关文章

随机推荐

  • 串口通信协议概述——针对面试

    串口通信 串口通信 Serial Communications 的概念非常简单 串口按位 bit 发送和接收字节的通信方式 重要参数 1 数据位 2 停止位 3 奇偶校验位 4 波特率 其中 数据位 停止位 奇偶校验位又是数据格式 数据格式
  • PyWebIo

    Part1什么是 PyWebIo PyWebIO 提供了一系列命令式的交互函数来在浏览器上获取用户输入和进行输出 将浏览器变成了一个 富文本终端 可以用于构建简单的 Web 应用或基于浏览器的 GUI 应用 使用 PyWebIO 开发者能像
  • 数据库项目代码生成工具V1.18.08.18.0(RIO)

    下载 1 第一步 2 第二步 3 第三步 结果
  • ios10.3之CoreData的详细教程

    首先如果要使用CoreData可以选择在初创项目时选择添加coredata 也可以选择自己添加coredata文件 系统添加coredata后会在Appdelegate类中自动添加一个persistentContainer属性 和一个sav
  • 苹果系统与win10连接到服务器,苹果手机怎么连接win10电脑详细步骤

    使用苹果手机的朋友们你们知道苹果手机如何连接win10电脑吗 不知道的就往下看看怎么操作吧 说不定以后你可能就会用到这个方法 1 用苹果手机正品数据线连接到电脑上的 USB 端口 电脑系统会自动识别出苹果手机的内部存储器 内部存储器包括包括
  • Ai-Bot RPA自动化框架

    Ai Bot是Android Windows平台上的node js自动化框架 1 跟python的区别 跟uipaht uibot 其他框架的区别 1 VS python 相同点 Ai Bot基于node js语言的一款自动化框架 和pyt
  • 关于网络连接Network的使用

    开发一个局域网连接 代码 using UnityEngine using System Collections public class all MonoBehaviour private int serverPort public int
  • Python模拟超级大乐透随机选号

    看了一下体彩超级大乐透规则 前区号码由01 35共三十五个号码组成 后区号码由01 12共十二个号码组成 由此可以使用random模拟体彩超级大乐透随机选号 import random import time class Lottery 一
  • STM32串口:字节中断与帧中断不同导致的BUG

    文章目录 一 问题背景 1 1 硬件连接框图 1 2 玄学的BUG 1 3 帧中断触发条件 1 4 字节中断触发条件 二 解决问题 2 1 复现BUG 一个帧中断 2包数据 2 2 项目总结思考 在使用STM32F207这一款单片机调试串口
  • 利用华硕e6308_P8P67_PRO主板开发双目立体视觉问题小结

    利用华硕e6308 P8P67 PRO主板开发双目立体视觉问题小结 实验室有台组装计算机 主板是华硕e6308 P8P67 PRO 实验室要求我利用该计算机开发双目立体视觉系统 咋看上去 这块主板很猛 motherboard的图解如下 可以
  • Linux安装MySQL详细教程(YUM+离线安装)

    目录 1 Linux安装MySQL共有两种方法 2 软件包工具下载 离线 3 YUM安装步骤 4 离线安装 着重介绍 1 Linux安装MySQL共有两种方法 一是使用YUM 二是离线安装 2 软件包工具下载 离线 MySQL Downlo
  • RocketMQ基础概念

    目录 1 简介 2 架构 3 核心概念 1 简介 RocketMQ 是一款开源的分布式消息中间件 最初由阿里巴巴集团开发并开源 它旨在为分布式系统提供可靠 高性能 可扩展的消息通信能力 RocketMQ和RabbitMQ KAFKA一起并列
  • 前端常见的加密方式

    1 base64加密
  • 图像分割的衡量指标详解

    转载自 http m blog csdn net u011771047 article details 72777349 http blog csdn net u014593748 article details 71698246 fps
  • 常见的正则表达式

    目录 问题现象 问题分析 解决方法 拓展 1 手机号或座机 2 邮箱 3 中文 4 数字 5 英文 6 组合 问题现象 今天在项目中 发现有个正则表达式匹配不上导致了数据校验不通过的问题 如下 于是就产生了疑问 这个正则表达式有什么问题 校
  • ERROR: node with name "rabbit" already running on "localhost"

    解决方法1 这个问题是在我用 rabbitmq server start 启动rabbimq的时候出现的 说明此时还有一些rabbitmq的线程没有结束 可以使用ps ef grep rabbitmq查找到哪些rabbitmq线程没有结束
  • iOS(一)UI的appIcon和BrandAsset(LaunchImage)

    一 首先我们先来创建一个最简单的程序 点击之后 选择Single View Application 然后点击Next 输入工程名字 继续点Next
  • MQTT

    http baike baidu com link url ZHdQftpTVAOwtrvsd x23l8hH1Xj i3su2hbhD4yEkMlYXJnefijw0zjfnvKY9I5oLdRI8zxlfCiBhakD fGKq MQT
  • 百融云预计2022年净利润同比翻倍 金融AI平台头部效应尽显

    2月15日 百融云创 06608 HK 发布2022年正面盈利预告 预期于截至2022年12月31日止年度录得非国际财务报告准则溢利 净利润 约2 86亿元人民币至2 93亿元人民币 较去年同期增长约103 至108 公告显示 公司主业营收
  • 房价预测(基于决策树算法)

    预测波士顿房价 第一步 导入数据 在这个项目中 将使用波士顿房屋信息数据来训练和测试一个模型 并对模型的性能和预测能力进行评估 我们希望可以通过该模型实现对房屋的价值预估 提高房地产经纪人的工作效率 此项目的数据集来自kaggle原始数据