python数据预测模型算法_PythonAI极简⼊门:4、使⽤回归模
型预测房价
⼀、回归预测
在前⾯的⽂章中我们介绍了机器学习主要解决分类、回归和聚类三⼤问题。今天我们来具体了解⼀下使⽤机器学习算法进⾏回归预测。
回归预测主要⽤于预测与对象关联的连续值属性,得到数值型的预测数据。回归预测的应⽤场景有各类的价格预测、相关性的反应预测等。
下⾯,我们就使⽤sklearn模块,以⼀个sklearn中集成的波⼠顿房价数据集来演⽰如何进⾏回归预测。
⼆、波⼠顿房价预测
1、引⼊数据集
在sklearn中内置的数据集都位于datasets⼦模块下,我们可以直接进⾏导⼊:
导⼊之后,看看数据集中的内容:
其中有五个键,从字⾯意思上理解,可以发现data是数据集中所有的数据特征,DESCR是数据集的描述信息,target是数据集特征对应的⽬标值,feature_name则是数据特征的名称。
我们先来看看数据特征的名称:
可以发现数据集中有13个特征,每个特征具体是什么意思,倒不清楚,我们可以在DESCR描述中到具体意思:
最后可以知道每个数据特征的含义如下:CRIM:⼈均犯罪率 ;
ZN:住宅⽤地超过两万五千平⽅英尺的⽐例 ;INDUS:城镇的⾮零售营业⽐例;
CHAS:河流分界;
NOX:⼀氧化氮浓度 ;
RM:住宅平均房间数;
AGE:1940年之前建造的房屋业主⽐例;DIS:距离波⼠顿五个就业中⼼的加权距离;RAD:径向公路的可达指数;
TAX :每⼀万美元财产的全额财产税率PTRATIO :城乡教师⽐例;
B :⿊⼈⽐例
LSTAT :低层⼈⽐例
MEDV :房屋价格中值
再来看看具体的数据特征和⽬标数据值:
数据特征形状:
数据特征概览:
数据特征⼀共有506⾏,13列,正好对应13个数据特征。⽽⽬标数据值的也正好是506个:
相当于是已经处理好的数据了。java调用python模型
但是对于初学者来说,这样处理好的数据看起来不是太直观,我们使⽤Pandas将其还原为DataFrame的形式,可以直观地看出这个数据集到底是什么样的:
对于熟悉使⽤pandas的同学来说,这样看这个数据集是不是亲切多了。
好了,我们可以直接进⾏下⼀步。
2、分割训练数据和测试数据
为了检验我们创建和训练好的机器学习模型的效果,将数据集分割为训练集和测试集是必须的。
⽽在sklearn中,也有⼀个专门的接⼝⽅法⽤于分割数据集的训练集和测试集——train_test_split,我们⾸先导⼊它:
然后将我们的数据集data传⼊,并设置测试集的⽐例为15%:
3、选择⼀个回归算法估计器
在sklearn中,所有的机器学习算法都以“估计器”的形式来呈现,每⼀个估计器都是⼀个类,机器学习模型通过实例化⼀个估计器的类来进⾏创建。⽐如线性回归的算法估计器:
每⼀个算法估计器,⽆论是监督学习算法还是⾮监督学习算法,都拥有⼀个fit()⽅法,⽤于接收训练数据集来训练数据,⽐如这样:
同时每⼀个算法估计器都有⽤⼀个predict()⽅法,⽤于接收数据来进⾏预测,⽐如这样:
在sklearn中,各类机器学习算法的API设计根据不同的⽤途的算法进⾏划分,我们可以⽅便地调⽤⾃⼰想要的算法,每⼀个监督学习算法,都由⼀个单独的⼦模块构成,其下包含算法的具体类,⽐如⼴义的线性回归算法:
其中根据⽤途,有的算法 可细分为⽤于回归的估计器和⽤于分类的估计器。
在此,我们选择随机森林算法的⽤于回归的估计器:
⾸先,导⼊算法估计器:
接着,实例化随机森林回归估计器,设置算法的参数并将训练集传⼊进⾏训练:
训练好模型之后,再使⽤predict()⽅法对训练集进⾏预测:
这样,我们就获得了使⽤随机森林回归模型对测试集进⾏预测的数据了,其为⼀个⼀维数组,我们可以直接打印出来看到:
还记得我们分割训练测试集的时候,有过⼀个y_test的数组吧?它是测试集x_test数据特征对应正确的房价结果,我们也来看看其数据:
如何⽐较正确数组和预测出来的数组的值的正确度呢?⼀个⽐较蠢的⽅法是通过遍历这两个数组进⾏对⽐,查看其差值:
如果测试数据集少的话,这样来⽐较似乎⼯作量还不⼤,要是测试集很⼤那就没办法了。幸⽽,sklearn中也提供了对模型的评估⽅法,所有的评估⽅法都集成在ics⼦模块中。针对回归模型,我们可以使⽤平均绝对误差MAE和均⽅差MSE以及R2分数来对回归模型评估:
然后在评估⽅法中传⼊预测数组和正确数组:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。