100天搞定机器学习|Day3多元线性回归

前情回顾
[次日100天搞定机器学习|Day2简单线性回归分析][1],咱们学习了简单线性回归分析,这个模型很是简单,很容易理解。实现方式是sklearn中的LinearRegression,咱们也学习了LinearRegression的四个参数,fit_intercept、normalize、copy_X、n_jobs。而后介绍了LinearRegression的几个用法,fit(X,y)、predict(X)、score(X,y)。最后学习了matplotlib.pyplot将训练集结果和测试集结果可视化。python


多元线性回归分析与简单线性回归很类似,可是要复杂一些了(影响因素由一个变成多个)。它有几个假设前提须要注意,git

①线性,自变量和因变量之间应该是线性的github

②同方差,偏差项方差恒定dom

③残差负荷正态分布机器学习

④无多重共线性性能

出现了一些新的名词,残差(残差是指实际观察值与回归估计值的差,【计量经济学名词】2绝对残差)、多重共线性(解释变量之间因为存在精确相关关系或高度相关关系而使模型估计失真或难以估计准确)。学习

对R感兴趣的同窗能够看一下我以前分享的几篇文章测试

[R多元线性回归容易忽视的几个问题(1)多重共线性][2]编码

[R多元线性回归容易忽视的几个问题(2)多重共线性的克服][3]3d

[R多元线性回归容易忽视的几个问题(3)异方差性][4]

[R多元线性回归容易忽视的几个问题(4)异方差性的克服][5]

多元线性回归中还有虚拟变量和虚拟变量陷阱的概念

虚拟变量:分类数据,离散,数值有限且无序,好比性别能够分为男和女,回归模型中能够用虚拟变量表示,1表示男,0表示女。

虚拟变量陷阱:两个或多个变量高度相关,即一个变量一个变量能够由另外一个预测得出。直观地说,有一个重复的类别:若是咱们放弃了男性类别,则它在女性类别中被定义为零(女性值为零表示男性,反之亦然)。 虚拟变量陷阱的解决方案是删除一个分类变量 —— 若是有多个类别,则在模型中使用m-1。 遗漏的值能够被认为是参考值。

须要注意的是:变量并不是越多越好,过多变量尤为是对输出没有影响的变量,可能致使模型预测精确度下降,因此要选择合适的变量,主要方法有三种,①向前选择(逐次加使RSS最小的自变量)②向后选择(逐次扔掉p值最大的变量)③双向选择

模型部分就是这样,下面开始python实现。

在开始操做以前,咱们仍是先观察一下数据,一共50组数据,有一些缺失值,也有虚拟变量(state:New York 、California、Florida)。

导入库

import pandas as pd
import numpy as np

导入数据集

dataset = pd.read_csv('50_Startups.csv')
X = dataset.iloc[ : , :-1].values
Y = dataset.iloc[ : ,  4 ].values

将类别数据数字化

from sklearn.preprocessing import LabelEncoder, OneHotEncoder
labelencoder = LabelEncoder()
X[: , 3] = labelencoder.fit_transform(X[ : , 3])
onehotencoder = OneHotEncoder(categorical_features = [3])
X = onehotencoder.fit_transform(X).toarray()

OneHotEncoderone-hot编码是一种对离散特征值的编码方式,在LR模型中经常使用到,用于给线性模型增长非线性能力。
躲避虚拟变量陷阱

X = X[: , 1:]

拆分数据集为训练集和测试集

from sklearn.model_selection import train_test_split
X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size = 0.2, random_state = 0)

第2步: 在训练集上训练多元线性回归模型

from sklearn.linear_model import LinearRegression
regressor = LinearRegression()
regressor.fit(X_train, Y_train)

Step 3: 在测试集上预测结果

y_pred = regressor.predict(X_test)

我的感受做为入门已经足够。可是多元线性回归分析是创建在上面说的四个假设前提上的(①线性,自变量和因变量之间应该是线性的②同方差,偏差项方差恒定③残差负荷正态分布④无多重共线性),因此初步获得一个线性回归模型,并不必定能够直接拿来使用,还须要进行验证和诊断。

https://github.com/MLEveryday/100-Days-Of-ML-Code?hmsr=toutiao.io&utm_medium=toutiao.io&utm_source=toutiao.io
首发于:

相关文章
相关标签/搜索