华盛顿大学机器学习课程(个案研究法)

来源:互联网 发布:jsp引入java文件 编辑:程序博客网 时间:2024/05/16 08:27

本课程主要是从应用入手,来解释一些机器学习中的模型。

案例一:regression, linear regression(回归、线性回归)

这个是一个经典的预测房价的案例。假设我们有一组房子的数据,包括房子面积,房间数目,卫生间个数,以及出售价格等属性,那么如何通过这些已知数据,来预测一个房子的出售价格呢?

利用的方法就是统计学中常用的数据分析方法——线性回归。利用该方法找到最合适的模型,来对新的数据进行预测。一般情况下,会把已知的真实数据划分为两部分,一个叫训练集(training set),一个叫测试集(test set)。训练集用于训练模型,测试集用于评价模型的准确性,并根据测试结果,按需调整模型的参数,使模型更加准确。

模型代码:
首先也要导入graphlab库

import graphlab

这边因为我没有在他给的笔记文件路径下使用,而是自己新建了一个文件,但是我想用他的数据,不知道怎么描述数据路径,这里用了os库查了一下当前路径

import osos.getcwd()

然后就返回了当前路径:
这里写图片描述
修改工作目录:

os.chdir('')#括号里的路径貌似要写\\的

得到当前路径,然后根据其格式改到数据所在路径,然后就能载入数据了。

sales = graphlab.SFrame('/home/jovyan/work/Week 2/home_data.gl/')

这里写图片描述

得到数据后,我们想在notebook下把它展示出来,不必打开新的浏览器,句式如下:

graphlab.canvas.set_target("ipynb")sales.show(view="Scatter Plot",x="sqft_living",y="price")#散点图,x轴为面积,y轴为价格

这里写图片描述

下面开始用该数据实现一个简单的回归模型。
之前说明过,数据在做任何处理之前,都要先把它分为训练集和测试集。
分离数据:

train_data,test_data = sales.random_split(.8,seed=0)#这边要设置随机分裂的种子

构建一个线性模型

sqft_model = graphlab.linear_regression.create(train_data,target='price',features=['sqft_living'])#利用训练数据集,目标输出是price,输入特征为sqft_living。这边输入特征不选的话默认所有。

这里写图片描述
模型训练完成之后,用测试数据集进行测试

print(sqft_model.evaluate(test_data))

这里写图片描述
这里的RMSE是均方根误差.

下面看一下我们的预测模型是什么样子的
导入matplotlib包

import matplotlib.pyplot as plt%matplotlib inline

这里写图片描述

查看模型中的相关系数:

sqft_model.get('coefficients')

这里写图片描述

观察数据里的其他特征

my_features = ['bedrooms','bathrooms','sqft_living','sqft_lot','floors','zipcode']sales[my_features].show()sales.show(view='BoxWhisker Plot',x='zipcode',y='price')

这里写图片描述