多元线性回归
本篇章主要介绍多元线性回归通过一个线性方程来适配观测数据,在两个以上(包括两个)的特征和响应之间构建的一个关系。多元线性回归的实现步骤和简单线性回归很相似,在评价部分有所不同,你可以用它来找出在预测结果上哪个因素影响力最大,以及不同变量是如何相互关联的。
前提
想要有一个成功的回归分析,确认这些假定很重要
1、线性:自变量和因变量的关系应该是线性的
2、保持误差项的方差齐性(常数方差):误差项的分散必须等同。
3、多元正态分布:多元回归假定符合正太分布。
4、缺少多重共线性:假设数据有极少甚至没有多重共线性。当特征不是相互独立时,会引发多重共线性。
注意
过多的变量可能会降低模型的精确度,尤其是如果存在一些对结果无关的变量,或者存在对其他变量造成很大影响的变量。这里介绍一些选择合适变量的方法:
1、向前选择法
2、向后选择法
3、向前向后法:即结合了上面说的向前法和向后法,先用向前法筛选一遍,再用向后法筛选一遍,直到最后无论怎么筛选模型变量都不再发生变化,就算结束。
虚拟变量
在多元回归模型中,当遇到数据集是非数值数据类型时,使用分类数据是一个非常有效的方法。分类数据,是指反映事物类别的数据,是离散数据,其数值个数有限且值之间无序。比如:按照性别分为男女两类。在一个回归模型中,这些分类值可以用虚变量来表示,变量通常取1或0表示肯定类型或否定类型。
虚拟变量陷阱
虚拟变量陷阱是指两个以上变量之间高度相关的情形。简而言之,就是存在一个能够被其他变量预测出的变量。解决虚拟变量陷阱的方法是,类别变量减去一:假如有m个类别,那么在模型构建时取m-1个虚拟变量,减去的那个变量可以看作是参照值。
# 导入库、导入数据集
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
print(X[:10])
print(Y)
打印的数据
from sklearn.preprocessing import LabelEncoder, OneHotEncoder
# 类别数据数字化
labelencoder = LabelEncoder()
X[: , 3] = labelencoder.fit_transform(X[ : , 3])
# 将数字化的值onehot
onehotencoder = OneHotEncoder(categorical_features = [3])
X = onehotencoder.fit_transform(X).toarray()
# 躲避虚拟变量陷阱
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)
# 在训练集上训练多元线性回归模型
from sklearn.linear_model import LinearRegression
regressor = LinearRegression()
regressor.fit(X_train, Y_train)
# 在测试集上预测结果
y_pred = regressor.predict(X_test)
网友评论