#加州房价预测实例#
任务:
基于加州房价数据集建立一个预测模型,使之可以在给定的条件下,预测加州任何地点的房价的中位数。

一、定义问题
1.公司要如何利用我的模型?
模型的输出将作为另一个机器学习算法的输入,该算法在综合考虑其他因素之后,决定是否值得在该区域投资。
2. 目前是否有可行的解决方案?
目前该区域的房价信息由一个专家团队完成,他们建立了非常复杂的模型。不仅费时费力,而且他们的评估泵不够准确,差错率达到15%。

二、将工程问题归纳为机器学习的问题
有监督学习任务,因为数据样本包含标签。
回归任务,因为你要预测一个价格。这是一个多变量回归任务,你要基于多个特征变量预测价格。
批量学习任务,因为并没有连续数据流输入系统。

三、选择评价指标
回归任务通常采用平方根均方误差(RMSE)作为评价指标,他衡量了系统预测差错的标准差。
???(?,ℎ)=√(1/? ∑_(?=1)?▒〖(ℎ(?((?) ))−?^((?) ) )^2 〗 )
如果有很多街区数据有异常,肯恒需要使用平均绝对误差(MAE)
???(?,ℎ)=1/? ∑_(?=1)?▒〖|ℎ(?((?) ))−?^((?) ) )|〗

四、windows环境配置和软件安装
书上案例是建议用linux系统或者macOS系统去做,但是我用的是window系统,所以将配置过程记录下来。我用的是Anaconda软件去做的。
软件下载过程及配置可以参考安装Anaconda教程这篇文章。
1.创建空间
这时候最好选择一个虚拟空间vitualenv,这样在以后做的过程中可以省去很多麻烦。
打开Anaconda Prompt,输入命令:cd D:\Anaconda3\Scripts(这里的路径是你安装的路径,可以按你的需求更改。注意,这个路径是加入到系统变量里的。)
然后输入:virtualenv env
这里是调用virtualenv这个程序,生成名为env的虚拟空间。
这时候就生成了名为env的虚拟空间,要想激活,输入命令activate env
这时候就进入了你的虚拟空间,这时候命令行开头会有env字样。
如:
2.安装需要用到的python包
房价预测可以用得到的包是
接着上面的输入:

出现:

为了检测安装的正确性,尝试着用下面的命令导入模块:

这一步不应该出现任何错误。现在激活Jupyter:

这时候Jupyter服务器就在终端运行,接口8889,同时在IE浏览器打开了Jupyter的主页。如果没有打开,可以自己复制网址在浏览器里打开。

这一步完成了三件事:第一个就是创造了一个名为Untitle.ipynb的记事本。二是打开了一个Jupyter Python kernel来运行这个notebook。三是在新的tab里打开了一个这个notebook。我们可以点击Untitled改为自己要定义的名字。我们测试一下,输入hello world!

第一次输入出错了,因为是用中文输入法中的(),所以一定要用英文输入法!!!!

五、对数据进行处理
S1、好了,现在所有的准备工作就只剩下数据的下载了。该数据是一个公开数据集,可以在互联网上直接下载获取。在这个项目中,事情很多更简单:你只需要下载一个压缩文件housing.tgz即可,这个文件夹里包含housing.csv,包含所有数据。
下载数据的网址是:数据下载
housing.csv在datasets/housing目录下。
下载过程输入代码:

当我们引用fetch_housing_data(),它就会创建一个datasets/housing目录在你的工作空间下面,并且会下载housing.tgz文件,并进行解压出housing.csv文件。

S2、当我们需要加载数据时,用到的python包是Pandas。我们需要写一个小的功能程序去加载这些数据。

这个功能返回来一个Pandas DataFrame,其中包含你的所有数据。

S3:让我们先来看一下这个数据的前五行部分。

注意:housing.csv文件一定要在datasets文件目录下面,如果没有的话需要手动upload。否则会出现找不到文件的错误。
从数据中我们可以看出,数据主要对经纬度、房价的中位数、总的房间数、总的卧室数、人口数量等特征进行的描述。
每一行代表一个街区,一共有10个特征。

S4、info()函数是对数据进行一个快速直观的描述,尤其是列的总数和每一个分类的特点以及空特征的数量。

在这个数据集里一共有20640个例子,这意味着相对于机器学习来说,这是一个相对小的数据集。请注意,total_bed rooms属性只有20433个非空值,这意味着207个地区没有使用此功能。我们以后需要处理这个问题。

所有属性都是数值的,除了ocean_proximity。它的类型是object,所以可以保存任何类型的python对象,但由于你是从csv文件加载此数据的,你知道它一定是一个文本属性。当你看前五排的时候,你可能注意到该列中的值是重复的,这意味着可能是一个分类属性。我们通过value_counts()发现存在哪些类别以及有多少个类别属于每一类。

所以这确实是一个分类信息。
S5:、让我们来看一下其他领域。除了ocean_proximity,其他都是数值特征,因此我们可以通过describe()来展示一系列数值特征。

我们同样可以把它打印出来。

通过这个图中我们可以看出:count、mean、min和max行的意义是显而易见的。请注意,空值被忽略了(例如,卧室总数为20433,而不是20640)。std行即标准偏差(测量值的分散程度)。25%、50%和75%行显示相应的百分位数:百分位数表示一组观测值中给定百分比低于的值。例如25%的街区其房龄值小于18年,50%少于29年,75%少于37年。

另一个对数据得到直观感受到方法就是画直方图。你可以用hist()来描述。用hist()需要引用python的matplotlib包,所以需要提前导入。

观察结果:
收入中位数似乎并非以美元计算。查看数据团队的报告可以发现,收入数值均已按比例放缩,高收入样本收入截止到15,而低收入样本截止到0.5;
通过直方图我们可以很轻松的发现有大于800个街区的房价的中位数高于$5000,000;
Housing median age和median house value也设置了截止点;
各属性的放缩比例不同;
很多数据都有长尾现象,从中位数向左比向右的距离短得多。不利于机器学习算法的学习,因此应该采取某种变换方式,变换为钟形。

这一部分主要是机器学习的初级部分,以房价预测为实例,介绍怎么用Anaconda的Jupyter以及各种配置,方便大家学习。再就是对这个实例的数据进行的分析,各种程序需要理解其意思。

机器学习之加州房价预测(一)相关推荐

  1. 完整的机器学习_加州房价预测

    机器学习的主要步骤 将问题框架化并且关注重点. 获取并探索数据以洞悉数据. 准备数据以更好地将基础数据模式暴露给机器学习算法. 探索多种不同的模型并列出最好的那些. 微调模型并将它们组合成一个很好的解 ...

  2. 使用pmml跨平台部署机器学习模型Demo——房价预测

      基于房价数据,在python中训练得到一个线性回归的模型,在JavaWeb中加载模型完成房价预测的功能. 一. 训练.保存模型 工具:PyCharm-2017.Python-39.sklearn2 ...

  3. 【机器学习】从房价预测问题看回归算法

    关键词:机器学习 / 回归 文章目录 回归问题是什么 生成数据 最小二乘法学习一元线性回归模型 最小二乘法学习多元线性回归模型 梯度下降法学习回归模型 回归问题是什么 回归问题是除了分类问题以外,机器 ...

  4. 机器学习初级项目--房价预测案例

    项目背景: 运用回归模型进行房价预测. 影响房价的因素有很多,在本题的数据集中有79个变量几乎描述了爱荷华州艾姆斯(Ames,lowa)住宅的方方面面,要求预测最终的房价. 数据介绍: 我们要使用Ba ...

  5. 机器学习入门实例-加州房价预测-1(数据准备与可视化)

    问题描述 数据来源:California Housing Prices dataset from the StatLib repository,1990年加州的统计数据. 要求:预测任意一个街区的房价 ...

  6. 《scikit-learn机器学习》波斯顿房价预测(线性回归预测)

    本节内容: 首先是要导入数据,看数据有多少个样本,有多少个特征标签,对其进行模型训练,用线性回归的方式对80%的训练集进行训练,发现训练的score比较低,优化为多项式模型,画学习曲线判断哪个多项式最 ...

  7. 机器学习——线性回归、房价预测案例【正规方案与梯度下降】

    # coding:utf-8 # 1.获取数据集 #2.数据基本处理 #2.1.数据划分 #3.特征工程--标准化 #4.机器学习(线性回归) #5.模型评估 from sklearn.dataset ...

  8. 机器学习 基于加州房价的线性回归实验

    1.线性回归闭合形式参数求解的原理 如果定义X为m*(n+1)的矩阵,Y为m1的矩阵,θ为(n+1)1维的矩阵,那么在之前的定义中就可以表示为h(x)=Xθ.则代价函数可以表示为J(θ)=1/2(Xθ ...

  9. 【机器学习实用指南】加州房价中位数预测

    加州房价预测 # 同时支持python2和python3 from __future__ import division,print_function,unicode_literals# 常用库 im ...

  10. 论文翻译之——《基于XGBoost的房价预测优化》-陶然

    目录 摘要 1 介绍 2.相关工作 2.1 文献综述 2.2 研究方法 3. 特征重要性和准确性改进 3.1 特征工程 3.1.1 数据描述 3.1.2 数据清洗 3.1.3 响应变量归一化 3.1. ...

最新文章

  1. 450刀的eGPU vs 谷歌Colab,谁更划算?
  2. tomcat WARNING [ContainerBackgroundProcessor[StandardEngine[Catalina]]]
  3. application/x-www-form-urlencoded multipart/form-data text/plain 的区别和作用
  4. ecma 2018, javascript spread syntax behaves like Object.assign
  5. 缓存-分布式锁-Redisson-读写锁补充
  6. agv系统介绍_AGV地面控制系统介绍
  7. m与n的数字运算python_M与N的数学运算
  8. Physically Based Specular for Artists
  9. ios10发邮件服务器拒绝,IOS10用户拒绝网络权限后,如何引导开启?
  10. 蓝桥杯 ADV-166算法提高 聪明的美食家
  11. 简单演示matlab生成三维平面的命令mesh
  12. 软件测试_性能测试_关注点
  13. 卷积神经网络 第三周作业 Keras+-+Tutorial+-+Happy+House+v1
  14. ad域管理与维护_windows server2012创建AD域服务器
  15. Html5开发的在线画板涂鸦,使用html5 canvas制作涂鸦画板
  16. SAP 会计科目表并存时会计科目映射
  17. 我们怎么做那个“卖铲子的人”
  18. 计算机英语造句简单的,简短的英语情话句子 经典英文简短情话
  19. 数据库突然不能运行了,出现 no connection established这么办!
  20. Macbook(M1版)的用户看过来,.net 6 Preview 6支持Apple Silicon for macOS

热门文章

  1. NUAA 南航操作系统实验 代码部分
  2. VLN论文英语表达积累
  3. 记录自己的CAN学习过程(念念不忘,必有回响)
  4. Comparator.comparing比较排序
  5. 测试人员用的专业截图软件,8款免费好用的截图软件工具
  6. java if else 如何简化_if else 简化写法
  7. 破解 zip 压缩包程序
  8. 陶瓷纤维毯行业调研报告 - 市场现状分析与发展前景预测
  9. 阿里云机器学习平台PAI之分类实践
  10. nodejs mysql process_nodeJS之进程process对象