机器学习和数据挖掘3——预测波士顿房价

机器学习和数据挖掘3——预测波士顿房价

来做一个demo,用python跑线性回归,来预测波士顿房价

《机器学习和数据挖掘3——预测波士顿房价》

​来,首先,我们引入库sklearn,然后直接使用该类库集成的数据集。

别忘了前面两篇文章,现在我们使用eclipse搭建开发环境,后续可能会换。记得我之前用的2.6.6,现在ide需要改成3.6.3。

改的位置:window-​preferences-PyDev里面需要new一下路径为3.6.3的。




 
《机器学习和数据挖掘3——预测波士顿房价》移除点击此处添加图片说明文字

​我们粘贴一下代码:

import sklearn from sklearn.datasets import load_boston boston = load_boston() print(boston.keys())​




 
《机器学习和数据挖掘3——预测波士顿房价》移除点击此处添加图片说明文字

​缺少numpy,用pip下载一下。




 
《机器学习和数据挖掘3——预测波士顿房价》移除点击此处添加图片说明文字

​成功!




 
《机器学习和数据挖掘3——预测波士顿房价》移除点击此处添加图片说明文字

波士顿数据集是scikit-learn的内置数据集,可以直接拿来使用。 波士顿数据集是scikit-learn的内置数据集,可以直接拿来使用。

然后我就这么导入啊,pip install sklearn

pip install numpy

pip install pandas

等等,




 
《机器学习和数据挖掘3——预测波士顿房价》移除点击此处添加图片说明文字

​——–走到这里,还记得上一篇中,我们说的吗,直接使用Jupyter,      




 
《机器学习和数据挖掘3——预测波士顿房价》移除点击此处添加图片说明文字

​第一步:Python库导入

%matplotlib inline 

import numpy as np 

import pandas as pd 

import matplotlib.pyplot as plt 

import sklearn




 
《机器学习和数据挖掘3——预测波士顿房价》移除点击此处添加图片说明文字

第二步:数据获取和理解

from sklearn.datasets import load_boston 

boston = load_boston()

print(boston.keys())

print(boston.data.shape)

print(boston.feature_names)

那我们后续可能需要一些python包,这里先pip引入:




 
《机器学习和数据挖掘3——预测波士顿房价》移除点击此处添加图片说明文字

如果依次pip导入的话,现在我们可以做一些基本的数据理解了:

请在控制台按照下列导入后,执行print输出查看data的特性,

import numpy as np

import pandas as pd

import matplotlib.pyplot as plt

import sklearn

from sklearn.datasets import load_boston 

boston = load_boston() 

print(boston.keys())

print(boston.data.shape)

print(boston.feature_names)

来看一下输出控制台结果:




 
《机器学习和数据挖掘3——预测波士顿房价》移除点击此处添加图片说明文字

​下列为字段匹配意义:




 
《机器学习和数据挖掘3——预测波士顿房价》移除点击此处添加图片说明文字

结论:波士顿数据集506个样本,14个特征。 结论:波士顿数据集506个样本,14个特征。 ​

是从其他地方找到的。可以看到,房价的高低,暂时我们先按照这14个维度来限定,当然,在中国,具体的房价那就有太多维度了,比方说学区房、超市、菜场、高铁、机场、地铁、就业等等。

​好的,我们继续做数据理解:

bos = pd.DataFrame(boston.data) 

print(bos.head())

​bos.columns = boston.feature_names 

print(bos.head())




 
《机器学习和数据挖掘3——预测波士顿房价》移除点击此处添加图片说明文字

​print(boston.target[:5])

bos[‘PRICE’] = boston.target

bos.head()




 
《机器学习和数据挖掘3——预测波士顿房价》移除点击此处添加图片说明文字

第三步:数据模型构建——线性回归

from sklearn.linear_model import LinearRegression 

X = bos.drop(‘PRICE’, axis=1) 

lm = LinearRegression() 

lm 

lm.fit(X, bos.PRICE) 

print(‘线性回归算法w值:’, lm.coef_) 

print(‘线性回归算法b值: ‘, lm.intercept_) 

import matplotlib.font_manager as fm 

myfont = fm.FontProperties(fname=’C:/Windows/Fonts/msyh.ttc’) 

plt.scatter(bos.RM, bos.PRICE) 

plt.xlabel(u’住宅平均房间数’, fontproperties=myfont) 

plt.ylabel(u’房屋价格’, fontproperties=myfont) 

plt.title(u’RM与PRICE的关系’, fontproperties=myfont) 

plt.show()

但是这段代码报错:




 
《机器学习和数据挖掘3——预测波士顿房价》移除点击此处添加图片说明文字

​搜索了一下

myfont = fm.FontProperties(fname=’C:/Windows/Fonts/msyh.ttc’)

这段是

import matplotlib.font_manager as fm

matplotlib的font管理工具想要调用windows的字体,做展示字体。那我们换一个字体好了。或者是网上找一下这个字体吧。

我附上这个字体的下载链接,在我的csdn博客中:

http://download.csdn.net/download/qq_33792843/10108812

直接下载下来,20兆,如果嫌麻烦,就换别的字体,一样的。




 
《机器学习和数据挖掘3——预测波士顿房价》移除点击此处添加图片说明文字

​原因在这里,我们打开这个路径:




 
《机器学习和数据挖掘3——预测波士顿房价》移除点击此处添加图片说明文字

​那如果我们换一个呢?哈哈,看好了,随便找一个简体字,然后右键属性,看字体名字:




 
《机器学习和数据挖掘3——预测波士顿房价》移除点击此处添加图片说明文字

​这个就是文件名了,然后我们在Jupeter上面写好:




 
《机器学习和数据挖掘3——预测波士顿房价》移除点击此处添加图片说明文字

​用这个新宋体好了:C:/Windows/Fonts/simfang.ttf

第四步:数据模型应用——预测房价

lm.predict(X)[0:5]

mse = np.mean((bos.PRICE – lm.predict(X)) ** 2) 

print(mse)




 
《机器学习和数据挖掘3——预测波士顿房价》移除点击此处添加图片说明文字

这个是每栋住宅的房间数和房价的关系,我们带入了横坐标为RM,每栋住宅房间数,和房价的线性关系图。接下来,可以换换别的玩一玩.




 
《机器学习和数据挖掘3——预测波士顿房价》移除点击此处添加图片说明文字

​可以看到犯罪率越低,房价越高,越稳定,犯罪率高的地方,房价都很低。

再来看看,城市中,黑人的比例:

这个就不好看了:




 
《机器学习和数据挖掘3——预测波士顿房价》移除点击此处添加图片说明文字

再来看看环保指标的关系:




 
《机器学习和数据挖掘3——预测波士顿房价》移除点击此处添加图片说明文字

其实这里就是模型,




 
《机器学习和数据挖掘3——预测波士顿房价》移除点击此处添加图片说明文字

​线性关系系数在此,我们可以看到,数值越大,关联性越强,越能体现线性。

当然,在此,我们也要来说一句题外话,线性回归,用来预测票房、房价等连续性的比较好,但是做分类比方说男女啊,就有很大的局限性了。可以看到线性回归算法w值,越等于0越没有关联性,负数为负相关,这个正9.几的。表示正相关性,很强。

总结

1 使用.DESCR探索波士顿数据集,业务目标是预测波士顿郊区住房的房价;

2 使用scikit-learn针对整个数据集拟合线性回归模型,并计算均方误差。

mse均方误差最小化准则,是为了算出这个算法的可用性、误差性,如果该数值越小则越好,说明这个算法越靠谱。

下面是网上找到的优化部分,有时间可以继续做一做

思考环节

1 对数据集分割成训练数据集和测试数据集

2 训练数据集训练线性回归模型,利用线性回归模型对测试数据集进行预测

3 计算训练模型的MSE和测试数据集预测结果的MSE

4 绘制测试数据集的残差图

    原文作者:大壮vip
    原文地址: https://blog.csdn.net/qq_33792843/article/details/78477632
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞