Machine Learning & Recommendation & NLP & DL机器学习100天线性回归

机器学习100天-Day3多重线性回归

2019-02-14  本文已影响7人  我的昵称违规了
Day3.jpg

多重线性回归(multiple linear regression)

多重线性回归的概念

多重线性回归是基于观测数据,给2个以上特征与结果构建线性模型的等式。构建多重线性回归模型的步骤与单线性回归模型类似。其中不同在于评价。你将使用评价去找出哪一个因素对预测结果有更大的影响以及不同变量之间的相关性。
y=b_0+b_1x_1+b_2x_2+...+b_nx_n

假设(对于一个成功的回归分析,确认以下四点假设十分重要)

注意

过多的变量有可能会导致模型变得不准确。尤其是当某些变量对结果没有任何影响或对其他变量有显著影响的时候。有很多方法去选择合适的变量。

虚拟变量(dummy variables)

在第一天的练习中已经使用imputer方法去对Yes和No进行虚拟变量转换。在多重回归模型中使用分类数据是一个很有效的方法,其中包括将非数字类型的数据引入回归模型中。分类数据是指数据值代表类别(数据值是一个固定的无序的数值)。例如,性别。在回归模型中这些数据能够被虚拟变量表达(将男女两个性别转为0、1)。感觉这里的分类变量就是量化研究中的名义变量,要使用特定数值进行表达

虚拟变量陷阱

虚拟变量陷阱是一个方案,在2个以上变量有高相关性时;简单来说,一个变量能够被另一个变量预测。没看懂,我又查了一下知乎依旧没看懂,应该是由于虚拟变量引入时个数的原因,与前面多重共线性相关,https://zhuanlan.zhihu.com/p/26640957
解决虚拟变量陷阱的方法是丢掉一个分类变量,如果模型中有m个分类变量,在模型里只使用m-1个,漏掉的那个变量可以认为是引用值。

第一步:数据预处理

import numpy as np
import pandas as pd
data=pd.read_excel(r'.\50_Startups.xlsx')
#通过iloc获取数据的所有值
X=data.iloc[:,:-1].values
Y=data.iloc[:,4].values
data.head()
from sklearn.preprocessing import LabelEncoder, OneHotEncoder
labelencoder=LabelEncoder()
print(X[:,3])
#使用LabelEncoder对标签数值进行标准化
X[:,3]=labelencoder.fit_transform(X[:,3])
print(X[:,3])
#对标签进行独热码处理
onehotencoder=OneHotEncoder(categorical_features=[3])
X=onehotencoder.fit_transform(X).toarray()
print(X)
#防止虚拟变量陷阱,从第二个开始取
X=X[:,1:]
from sklearn.cross_validation import train_test_split
X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size = 0.2, random_state = 0)

第二步:用训练集拟合模型

这一步与单线性回归类似
使用LinearRegression中的regressor,使用fit()方法。

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

第三步:预测测试结果

在这里预测观测数据。输出值为Y_pred。

y_pred=regressor.predict(X_test)

翻译的好累啊,两个概念不是很懂,多重线性和虚拟变量陷阱,不过工程的话照做就是了。
本次练习的链接https://github.com/jwc19890114/-02-learning-file-100days/blob/master/03.ipynb
数据集为50_Startups.xlsx

上一篇 下一篇

猜你喜欢

热点阅读