查看原文
其他

sklearn入门之多元线性回归

爬虫俱乐部 Stata and Python数据分析 2022-03-15

本文作者:杨长青

本文编辑:胡   婧

技术总编:张学人

爬虫俱乐部将于2019年1月19日至25日在武汉举行两期Stata编程技术定制培训,此次采取初级班和高级班分批次培训模式,采用理论与案例相结合的方式,旨在帮助大家熟悉Stata核心的爬虫技术,以及Stata与其他软件交互的高端技术。详细培训大纲及报名方式,请见往期推文《2019寒假Stata编程技术定制培训班》。报名表下载请点击文末阅读原文呦~

scikit-learn又称sklearn是基于python的一个强大的机器学习库,它建立在numpy,scipy和matplotlib模块之上能够为用户提供各种机器学习算法接口。sklearn包含了常用的分类,回归,聚类,降维,模型选择,数据预处理等机器学习方式。可以让用户简单、高效地进行数据挖掘数据分析

为了安装sklearn,可以直接在cmd窗口输入:

pip install sklearn

上述是Anaconda安装sklearn库的方法,如果大家仅仅安装的是python语言,则需要在安装科学计算库numpy、scipy,可视化库matplotlib的基础上,再安装sklearn。

接下来,给大家介绍如何用sklearn进行多元线性回归。

一、多元线性回归原理

多元线性回归模型的一般形式是:

其中ε表示随机误差,随机误差满足正太分布假设,无偏性假设,同方差假设,独立性假设。多元线性回归中的参数通过最小二乘法进行估计,选择合适的参数使残差平方和最小。

二、基于sklearn的多元线性回归的案例分析

1

数据的选择

选取sklearn自带的波士顿房价数据集。波士顿房价数据集包含506组数据,每条数据包含房屋以及房屋周围的详细信息。其中解释变量包含城镇犯罪率、一氧化氮浓度、住宅平均房间数、到中心区域的加权距离等。被解释变量是波士顿平均房价。波士顿房价数据集是回归问题常用的示例数据集。

载入数据:

from sklearn import datasets boston=datasets.load_boston()#波士顿房价数据集
x,y=boston.data,boston.target #x等于影响房价的13个因素构成矩阵,y等于平均房屋价格
print('矩阵x形状') print(x.shape)#打印x形状
print('y的维度') print(y.shape) #打印y的维度

矩阵x的部分数据如下图所示:

矩阵x的行数等于506,列数等于13,代表有506条观测值,13个房价特征。向量y的维数等于506,代表房屋平均价格。

2

训练集和测试集的切分

运用sklearn.model_selection.train_test_ split随机划分训练集和测试集。

程序如下:

from sklearn. model_selection import train_test_split x_train,x_test,y_train,y_test= train_test_split(x, y,test_size=0.25,random_state=10010) #切分0.25的测试集,随机数种子为10010
print(x_train.shape) print(x_test.shape)

其中:

x,y:需要拆分的数组和矩阵。

test_size:如果为float,则应介于0.0和1.0之间,并表示要包含在测试拆分中的数据集的比例。如果是int,则表示测试样本的绝对数量。这里抽取25%作为测试集。

random_state :随机数种子数,保证程序的可重复性。这里设置随机种子数为10010。

这样测试集和训练集就划分好了训练集有379条观测值,测试集有127条观测值,结果如下:

爬虫俱乐部是您身边的科研助手,能够为您在数据处理实证研究中提供帮助。承蒙30000+粉丝的支持与厚爱,我们在腾讯课堂推出了网络视频课程,专注于数据整理、网络爬虫、循环命令编制和结果输出…李老师及团队精彩地讲解,深入浅出,注重案例与实战,让您更加快速高效地掌握Stata技巧及数据处理的精髓,而且可以无限次重复观看,百分百好评,简单易学,一个月让您从入门到精通。绝对物超所值!观看学习网址:https://ke.qq.com/course/286526?tuin=1b60b462,敬请关注!

3

运行多元线性模型

sklearn.linear_model.LinearRegression模块能够实行于最小二乘的线性回归模型。

程序如下:

from sklearn.linear_model import LinearRegression reg=LinearRegression()
#用训练集对模型进行训练
reg.fit(x_train,y_train)
#打印回归系数
print(reg.coef_)
#打印截距项
print(reg.intercept_)
#模型的拟合值
y_train_predict=reg.predict(x_train)
#模型的拟合优度
print(reg.score(x_train,y_train))

多元线性回归模型的系数和截距项分别为:

模型的拟合优度为:

4

模型的评价

sklearn.metrics模块提供了常用的模型评价指标。对于多元线性回归,常用的模型评价的指标一般是MSE。其表达式如下所示:

其中是第i个观测值点上的预测。如果预测值的响应值与真实的响应值很接近,则均方误差非常小;若预测的响应值与真实的响应值存在实质上的差别,则均方误差会非常大。当MSE由训练数据计算得出,称作训练均方误差,但我们一般关系的由测试数据计算出来的MSE,即测试均方误差。选择合适的模型,使测试均方误差最小。

程序如下:

from sklearn.metrics import mean_squared_error  #均方误差
#测试集的预测
y_predict=reg.predict(x_test)
#输出测试集mse
print(mean_squared_error(y_test,y_predict))

测试集的均方误差为:

由于房价的均值为22.53,相对于房价均值均方误差还是很大的,我们可以通过对特征进出处理或更换模型比较预测均方误差,来选择更优的模型。

以上就完成了一个多元线性回归的简单的案例。可以看到几乎所有机器学习的流程在sklearn中都有相应的模块,这也是sklearn库的强大之处。在接下来的推文中,将会为大家介绍如何使用sklearn库运行其他机器学习模型

有问题,不要怕!访问 

http://www.wuhanstring.com/uploads/5_aboutus/爬虫俱乐部-用户问题登记表.docx (复制到浏览器中)下载爬虫俱乐部用户问题登记表并按要求填写后发送至邮箱statatraining@163.com,我们会及时为您解答哟~

爬虫俱乐部的github主站正式上线了!我们的网站地址是:https://stata-club.github.io,粉丝们可以通过该网站访问过去的推文哟~

爬虫俱乐部隆重推出数据定制及处理业务,您有任何网页数据获取及处理方面的难题,请发邮件至我们邮箱statatraining@163.com,届时会有俱乐部高级会员为您排忧解难!

对爬虫俱乐部的推文累计打赏超过1000元我们即可给您开具发票,发票类别为“咨询费”。用心做事,只为做您更贴心的小爬虫!

往期推文推荐

关于我们

微信公众号“爬虫俱乐部”分享实用的stata命令,欢迎转载、打赏。爬虫俱乐部是由李春涛教授领导下的研究生及本科生组成的大数据分析和数据挖掘团队。


此外,欢迎大家踊跃投稿,介绍一些关于stata的数据处理和分析技巧。

投稿邮箱:statatraining@163.com

投稿要求:
1)必须原创,禁止抄袭;
2)必须准确,详细,有例子,有截图;
注意事项:
1)所有投稿都会经过本公众号运营团队成员的审核,审核通过才可录用,一经录用,会在该推文里为作者署名,并有赏金分成。
2)邮件请注明投稿,邮件名称为“投稿+推文名称”。
3)应广大读者要求,现开通有偿问答服务,如果大家遇到关于stata分析数据的问题,可以在公众号中提出,只需支付少量赏金,我们会在后期的推文里给予解答。

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存