- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
原理+代码|Python实战多元线性回归模型
「多元线性回归模型」非经常见,是大多数人入门机器学习的第一个案例,虽然如此,里面还是有很多值得学习和留意的地方。其中多元共线性这个问题将贯穿全部的机器学习模型,所以本文会「将原理学问穿插于代码段中」,争取以不一样的视角来叙述和讲解「如何更好的构建和优化多元线性回归模型」。次要将分为两个部分:
具体原理
Python 实战
Python 实战
Python 多元线性回归的模型的实战案例有格外多,这里虽然选用的经典的房价猜测,但贵在的流程简约完整,其中用到的精度优化方法效果拔群,能供应比较好的参考价值。
数据探究
本文的数据集是经过清洗的美国某地区的房价数据集
import?pandas?as?pdimport?numpy?as?npimport?seaborn?as?snsimport?matplotlib.pyplot?as?pltdf?=?pd.read_csv(house_prices.csv)df.info();df.head()
参数说明:
neighborhood/area:所属街区和面积
bedrooms/bathrooms:卧房和浴室
style:房屋样式
多元线性回归建模
现在我们直接构建多元线性回归模型
from?statsmodels.formula.api?import?ols??????????????????????#?小写的?ols?函数才会自带截距项,OLS?则不会?????????#?固定格式:因变量?~?自变量(+?号连接)lm?=?ols(price?~?area?+?bedrooms?+?bathrooms,?data=df).fit()lm.summary()
红框为我们关注的结果值,其中截距项Intercept的 P 值没有意义,可以不用管它
模型优化
从上图可以看到,模型的精度较低,由于还有类别变量neighborhood和style没有完全利用。这里我们先查看一下类别变量的类别分布情况:
#?类别变量,又称为名义变量,nominal?variablesnominal_vars?=?[neighborhood,?style]for?each?in?nominal_vars:????print(each,?:)????print(df[each].agg([value_counts]).T)??#?Pandas?骚操作????#?直接?.value_counts().T?无法实现下面的效果?????##?必需得?agg,而且里面的中括号?[]?也不能少????print(=*35)
虚拟变量的设置
由于类别变量无法直接放入模型,这里需要转换一下,而多元线性回归模型中类别变量的转换最常用的方法之一便是将其转化成虚拟变量。原理其实格外简约,将无法直接用于建模的名义变量转换成可放入模型的虚拟变量的核心就短短八个字:「四散拆开,非此即彼」。下面用一个只要 4 行的微型数据集辅以说明。
从上表中,不难发觉:
该名义变量有 n 类,就能拆分出 n 个虚拟变量
奇妙的使用 0 和 1 来达到「用虚拟变量列代替原名义变量所在类别」
接下来要做的就是将生成的虚拟变量们放入多元线性回归模型,但要留意的是:「转化后的虚拟变量们需要舍弃一个」,才能得到满秩矩阵。具体缘由和有关线性代数的解释可以查看笔者打包好的论文,我们可以理解为,当该名义变量可划分为 n 类时,只需要 n-1 个虚拟变量就已足够获知全部信息了。该丢弃哪个,可依据实际情况来打算。
因而为原数据集的某名义变量添加虚拟变量的步骤为:
抽出期望转换的名义变量(一个或多个)
pandas的get_dummies函数
与原数据集横向拼接
留意虚拟变量设置成功后,需要与原来的数据集拼接,这样才能将其一起放进模型。
再次建模后,发觉模型精度大大提升,但潜在的多元共线性问题也随之显现出来
在解释模型中虚拟变量的系数之前,我们先衰退模型中多元共线性的影响,由于在排解共线性后,模型中的各个自变量的系数又会转变,最终的多元线性回归模型的等式又会不一样。多重线性回归模型的次要假设之一是我们的猜测变量(自变量)彼此不相关。我们期望猜测变量(自变量)与反应变量(因变量)相关,而不是彼此之间具有相关性。方差膨胀因子(Variance Inflation Factor,以下简称VIF),是「指解释变量之间存在多重共线性时的方差与不存在多重共线性时的方差之比」
上图公式可以看出在方差膨胀因子的检测中:
每个自变量都会有一个膨胀因子值 ,最终依据值的大小来选择能否删减
「既然 表示相关性,是谁跟谁的相关性呢?」 是自变量中的某一变量与除它外剩余的自变量进行多元线性回归,取回归结果,即模型精度来作为
文档评论(0)