机器学习之加州房价预测(一)

#加州房价预测实例#
任务:
基于加州房价数据集建立一个预测模型,使之可以在给定的条件下,预测加州任何地点的房价的中位数。
机器学习之加州房价预测(一)_第1张图片
一、定义问题
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包
房价预测可以用得到的包是
接着上面的输入:
在这里插入图片描述
出现:
机器学习之加州房价预测(一)_第2张图片
为了检测安装的正确性,尝试着用下面的命令导入模块:
在这里插入图片描述
这一步不应该出现任何错误。现在激活Jupyter:
机器学习之加州房价预测(一)_第3张图片
这时候Jupyter服务器就在终端运行,接口8889,同时在IE浏览器打开了Jupyter的主页。如果没有打开,可以自己复制网址在浏览器里打开。
机器学习之加州房价预测(一)_第4张图片
这一步完成了三件事:第一个就是创造了一个名为Untitle.ipynb的记事本。二是打开了一个Jupyter Python kernel来运行这个notebook。三是在新的tab里打开了一个这个notebook。我们可以点击Untitled改为自己要定义的名字。我们测试一下,输入hello world!
机器学习之加州房价预测(一)_第5张图片
第一次输入出错了,因为是用中文输入法中的(),所以一定要用英文输入法!!!!

五、对数据进行处理
S1、好了,现在所有的准备工作就只剩下数据的下载了。该数据是一个公开数据集,可以在互联网上直接下载获取。在这个项目中,事情很多更简单:你只需要下载一个压缩文件housing.tgz即可,这个文件夹里包含housing.csv,包含所有数据。
下载数据的网址是:数据下载
housing.csv在datasets/housing目录下。
下载过程输入代码:
机器学习之加州房价预测(一)_第6张图片
当我们引用fetch_housing_data(),它就会创建一个datasets/housing目录在你的工作空间下面,并且会下载housing.tgz文件,并进行解压出housing.csv文件。

S2、当我们需要加载数据时,用到的python包是Pandas。我们需要写一个小的功能程序去加载这些数据。
在这里插入图片描述
这个功能返回来一个Pandas DataFrame,其中包含你的所有数据。

S3:让我们先来看一下这个数据的前五行部分。
机器学习之加州房价预测(一)_第7张图片
注意:housing.csv文件一定要在datasets文件目录下面,如果没有的话需要手动upload。否则会出现找不到文件的错误。
从数据中我们可以看出,数据主要对经纬度、房价的中位数、总的房间数、总的卧室数、人口数量等特征进行的描述。
每一行代表一个街区,一共有10个特征。

S4、info()函数是对数据进行一个快速直观的描述,尤其是列的总数和每一个分类的特点以及空特征的数量。
机器学习之加州房价预测(一)_第8张图片
在这个数据集里一共有20640个例子,这意味着相对于机器学习来说,这是一个相对小的数据集。请注意,total_bed rooms属性只有20433个非空值,这意味着207个地区没有使用此功能。我们以后需要处理这个问题。

所有属性都是数值的,除了ocean_proximity。它的类型是object,所以可以保存任何类型的python对象,但由于你是从csv文件加载此数据的,你知道它一定是一个文本属性。当你看前五排的时候,你可能注意到该列中的值是重复的,这意味着可能是一个分类属性。我们通过value_counts()发现存在哪些类别以及有多少个类别属于每一类。
机器学习之加州房价预测(一)_第9张图片
所以这确实是一个分类信息。
S5:、让我们来看一下其他领域。除了ocean_proximity,其他都是数值特征,因此我们可以通过describe()来展示一系列数值特征。
机器学习之加州房价预测(一)_第10张图片
我们同样可以把它打印出来。
机器学习之加州房价预测(一)_第11张图片
通过这个图中我们可以看出:count、mean、min和max行的意义是显而易见的。请注意,空值被忽略了(例如,卧室总数为20433,而不是20640)。std行即标准偏差(测量值的分散程度)。25%、50%和75%行显示相应的百分位数:百分位数表示一组观测值中给定百分比低于的值。例如25%的街区其房龄值小于18年,50%少于29年,75%少于37年。

另一个对数据得到直观感受到方法就是画直方图。你可以用hist()来描述。用hist()需要引用python的matplotlib包,所以需要提前导入。
机器学习之加州房价预测(一)_第12张图片
观察结果:
收入中位数似乎并非以美元计算。查看数据团队的报告可以发现,收入数值均已按比例放缩,高收入样本收入截止到15,而低收入样本截止到0.5;
通过直方图我们可以很轻松的发现有大于800个街区的房价的中位数高于$5000,000;
Housing median age和median house value也设置了截止点;
各属性的放缩比例不同;
很多数据都有长尾现象,从中位数向左比向右的距离短得多。不利于机器学习算法的学习,因此应该采取某种变换方式,变换为钟形。

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

你可能感兴趣的:(kaggle)