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

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


前情回顾


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


640.jpg



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


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

同方差,误差项方差恒定

③残差负荷正态分布

④无多重共线性


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


R感兴趣的同学可以看一下我之前分享的几篇文章


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

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

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

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


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


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


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


640.jpg


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


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


640.png



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


640.jpg


第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


#将类别数据数字化


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[: , 3]
Out[31]: 
array([2, 0, 1, 2, 1, 2, 0, 1, 2, 0, 1, 0, 1, 0, 1, 2, 0, 2, 1, 2, 0, 2,
       1, 1, 2, 0, 1, 2, 1, 2, 1, 2, 0, 1, 0, 2, 1, 0, 2, 0, 0, 1, 0, 2,
       0, 2, 1, 0, 2, 0], dtype=object)

#躲避虚拟变量陷阱


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)


代码部分没什么好说的,跟简单线性回归分析类似。


Avik-Jain写到这就结束了,个人感觉作为入门已经足够。但是多元线性回归分析是建立在上面说的四个假设前提上的(①线性,自变量和因变量之间应该是线性的同方差,误差项方差恒定③残差负荷正态分布④无多重共线性),所以初步得到一个线性回归模型,并不一定可以直接拿来使用,还需要进行验证和诊断。所以明天先不写day4了,狗尾续貂一下,把模型评价讲一下,敬请期待!

相关文章
|
12天前
|
机器学习/深度学习 人工智能 算法
探索机器学习:从线性回归到深度学习
本文将带领读者从基础的线性回归模型开始,逐步深入到复杂的深度学习网络。我们将通过代码示例,展示如何实现这些算法,并解释其背后的数学原理。无论你是初学者还是有经验的开发者,这篇文章都将为你提供有价值的见解和知识。让我们一起踏上这段激动人心的旅程吧!
|
25天前
|
机器学习/深度学习 人工智能 算法
探索机器学习中的线性回归模型
本文深入探讨了机器学习中广泛使用的线性回归模型,从其基本概念和数学原理出发,逐步引导读者理解模型的构建、训练及评估过程。通过实例分析与代码演示,本文旨在为初学者提供一个清晰的学习路径,帮助他们在实践中更好地应用线性回归模型解决实际问题。
|
26天前
|
机器学习/深度学习 自然语言处理 算法
深入理解机器学习算法:从线性回归到神经网络
深入理解机器学习算法:从线性回归到神经网络
|
7月前
|
机器学习/深度学习 算法 TensorFlow
机器学习算法简介:从线性回归到深度学习
【5月更文挑战第30天】本文概述了6种基本机器学习算法:线性回归、逻辑回归、决策树、支持向量机、随机森林和深度学习。通过Python示例代码展示了如何使用Scikit-learn、statsmodels、TensorFlow库进行实现。这些算法在不同场景下各有优势,如线性回归处理连续值,逻辑回归用于二分类,决策树适用于规则提取,支持向量机最大化类别间隔,随机森林集成多个决策树提升性能,而深度学习利用神经网络解决复杂模式识别问题。理解并选择合适算法对提升模型效果至关重要。
252 4
|
1月前
|
机器学习/深度学习 数据采集 算法
探索机器学习中的线性回归
【10月更文挑战第25天】本文将深入浅出地介绍线性回归模型,一个在机器学习领域中广泛使用的预测工具。我们将从理论出发,逐步引入代码示例,展示如何利用Python和scikit-learn库实现一个简单的线性回归模型。文章不仅适合初学者理解线性回归的基础概念,同时也为有一定基础的读者提供实践指导。
|
2月前
|
机器学习/深度学习 TensorFlow 算法框架/工具
探索机器学习:从线性回归到深度学习
在这篇文章中,我们将一起踏上一场激动人心的旅程,穿越机器学习的广阔天地。我们将从最基本的线性回归开始,逐步深入到复杂的深度学习模型。无论你是初学者还是有经验的开发者,这篇文章都将为你提供新的视角和深入的理解。让我们一起探索这个充满无限可能的世界吧!
|
7月前
|
机器学习/深度学习 数据采集 人工智能
【机器学习】解释什么是线性回归?
【5月更文挑战第15天】【机器学习】解释什么是线性回归?
|
2月前
|
机器学习/深度学习 API
机器学习入门(七):线性回归原理,损失函数和正规方程
机器学习入门(七):线性回归原理,损失函数和正规方程
|
3月前
|
机器学习/深度学习 人工智能 自然语言处理
探索机器学习:从线性回归到深度学习
【9月更文挑战第4天】在这篇文章中,我们将深入探讨机器学习的世界,从基础的线性回归模型开始,逐步深入到复杂的深度学习网络。我们将通过实际的代码示例,揭示这些模型背后的数学原理,以及如何在现实世界的问题中应用它们。无论你是初学者还是有经验的数据科学家,这篇文章都将为你提供新的视角和深入的理解。
|
4月前
|
机器学习/深度学习 人工智能 自然语言处理
探索机器学习的奥秘:从线性回归到深度学习
【8月更文挑战第26天】本文将带领读者走进机器学习的世界,从基础的线性回归模型开始,逐步深入到复杂的深度学习网络。我们将探讨各种算法的原理、应用场景以及实现方法,并通过代码示例加深理解。无论你是初学者还是有一定经验的开发者,这篇文章都将为你提供有价值的知识和技能。让我们一起揭开机器学习的神秘面纱,探索这个充满无限可能的领域吧!