100天的ML day03 多元线性回归

概念解释

线性:

自变量和因变量的关系应该是线性的(也即特征值和预测值是线性相关)

保持误差项的方差齐性(常数方差):

误差项的分散(方差)必须相同。(what????)

多元正态分布:

多元回归假定残差符合正态分布。

缺少多重共线性:

假设数据有极少甚至没有多重共线性,当特征(或自变量)不是相互独立时,才会引发多重共线性。

虚(拟)变量:

在多元回归模型中,当遇到数据集时非数值数据类型时,使用分类数据是一个非常有效的方法。

分类数据,是指反映(事物)类别的数据,是离散数据,其数值个数(分类属性)有限(但可能很多)且值之间无序。比如,按性别分为男、女两类。在一个回归模型中,这些分类值可以用虚变量来表示,变量通常其诸如1或0这样的值来表示肯定类型或否定类型。

虚拟变量陷阱:

虚拟变量陷阱是指两个及以上变量之间高度相关的情形。简而言之,就是存在一个能够被其他变量预测出的变量。我们举一个存在重复类别(变量)的直观例子:假使我们舍弃男性类别,那么,该类别也可以通过女性类别来定义(女性值为0时,表示男性,为1时,表示女性),反之亦然。

解决虚拟变量陷阱的方法是,类别变量减去一:假如有m个类别,那么在模型构建时取m-1个虚拟变量,减去的那个变量可以看作时参照值。

注意:

过多的变量可能会降低模型的精确度,尤其是如果存在一些对结果无关的变量,或者存在对其他变量造成很大影响的变量时,这里介绍一些选择合适变量的方法:

1、向前选择法、

2、向后选择法(也称 向后剔除法/向后消元法)

3、向前向后法:即结合了上面说的向前法和向后法,先用向前法筛选一遍,再用向后法筛选一遍,直到最后无论怎么筛选模型变量都不再发生变化,就算是结束了。

 

总结

数据预处理:

  • 导入相关库
  • 导入数据集
  • 检查缺失数据
  • 数据分类
  • 有必要的话,编辑虚拟变量并注意避免虚拟变量陷阱
  • 特征缩放我们将用简单线性回归模型的相关库来做
#数据预处理
import numpy as np
import pandas as pd

dataset = pd.read_csv('./datasets/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])
#print("X",X[:10,3]) X [2 0 1 2 1 2 0 1 2 0]
onehotencoder = OneHotEncoder(categorical_features = [3])
X = onehotencoder.fit_transform(X).toarray()
X1 = 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)
X1_train, X1_test, Y1_train, Y1_test = train_test_split(X1, Y,test_size = 0.2, random_state = 0)

在训练集上训练模型

这一步和简单线性回归模型的处理完全一样

  • 用sklearn.linear_model库的LinearRegression类,在数据集上训练模型。
  • 首先创建一个LinearRegression的对象regressor
  • 接着用LinearRegression类的fit()方法,用对象regressor在数据集上进行训练
#在训练集上训练多元线性回归模型
from sklearn.linear_model import LinearRegression
regressor = LinearRegression()
regressor.fit(X_train, Y_train)
regressor1 = LinearRegression()
regressor1.fit(X1_train, Y1_train)

预测结果

在测试集上进行预测,并观察结果。

  • 我们将把输出结果保存在向量Y_pred中。
  • 使用上一步训练时我们用的对象regressor,在训练完之后,用其predict()方法来预测结果。
y_pred  = regressor.predict(X_test)
y1_pred = regressor1.predict(X1_test)

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值