美文网首页
机器学习第3天:多元线性回归

机器学习第3天:多元线性回归

作者: K同学啊 | 来源:发表于2019-01-24 17:30 被阅读9次

联系我:ke.zb@qq.com
我的技术博客:明天依旧可好-CSDN

-----代码传送门-----
-----数据传送门-----


一、具体实现步骤

第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])
#表示对第4个特征进进行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)

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

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

第3步:在测试集上预测结果

y_pred = regressor.predict(X_test)

二、知识点详解

1. 关于多元线性回归

简单线性回归:影响Y的因素唯一,只有一个。
多元线性回归:影响Y的因数不唯一,有多个。

与一元线性回归一样,多元线性回归自然是一个回归问题。

一元线性回归方程:Y=aX+b。
多元线性回归是:Y=aX1+bX2+cX3+.......+nXn。

相当于我们高中学的一元一次方程,变成了n元一次方程。因为y还是那个y。只是自变量增加了。

2. 关于OneHotEncoder()编码

在实际的机器学习的应用任务中,特征有时候并不总是连续值,有可能是一些分类值,如性别可分为“male”和“female”。在机器学习任务中,对于这样的特征,通常我们需要对其进行特征数字化,如下面的例子:

有如下三个特征属性:

  • 性别:["male","female"]
  • 地区:["Europe","US","Asia"]
  • 浏览器:["Firefox","Chrome","Safari","Internet Explorer"]

通过LabelEncoder将其数字化:

  • 性别:[0,1]
  • 地区:[0,1,2]
  • 浏览器:[0,1,2,3]

再用OneHotEncoder进行编码:

from sklearn.preprocessing import  OneHotEncoder

enc = OneHotEncoder()
enc.fit([[0, 0, 3],
         [1, 1, 0],
         [0, 2, 1],
         [1, 0, 2]])
"""
如果不加 toarray() 的话,输出的是稀疏的存储格式,即索引加值的形式,
也可以通过参数指定 sparse = False 来达到同样的效果
"""
ans = enc.transform([[0, 1, 3]]).toarray()  
print(ans) # 输出 [[ 1.  0.  0.  1.  0.  0.  0.  0.  1.]]

解释:对于输入数组,这依旧是把每一行当作一个样本,每一列当作一个特征。

  • 我们先来看第一个特征,即第一列 [0,1,0,1],也就是说它有两个取值 0 或者 1,那么 one-hot 就会使用两位来表示这个特征,[1,0] 表示 0, [0,1] 表示 1,在上例输出结果中的前两位 [1,0...] 也就是表示该特征为 0。
  • 第二个特征,第二列 [0,1,2,0],它有三种值,那么 one-hot 就会使用三位来表示这个特征,[1,0,0] 表示 0, [0,1,0] 表示 1,[0,0,1] 表示 2,在上例输出结果中的第三位到第六位 [...0,1,0,0...] 也就是表示该特征为 1。
  • 第二个特征,第三列 [3,0,1,2],它有四种值,那么 one-hot 就会使用四位来表示这个特征,[1,0,0,0] 表示 0, [0,1,0,0] 表示 1,[0,0,1,0] 表示 2,[0,0,0,1] 表示 3,在上例输出结果中的最后四位 [...0,0,0,1] 也就是表示该特征为 3

可以简单理解为“male”“US”“Safari”经过LabelEncoder与OneHotEncoder的编码就变成了:[[1. 0. 0. 1. 0. 0. 0. 0. 1.]]

更多OneHot编码知识可前往:scikit-learn 中 OneHotEncoder 解析

3. 关于toarray()

toarray():将列表转化为数组

Python原生没有数组的概念,这点不同于Java之类的面向对象语言。Python中原生的列表使用起来很像数组,但是两者有本质的区别

列表与数组的最本质的区别:列表中的所有元素的内存地址可以不是连续的,而数组是连续的。
<div align=center><img src="https://img-blog.csdn.net/20180920120440251" width="80%" height="80%"></div>

更详细的解释:Python中列表与数组的区别

4. 虚拟变量陷阱

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

虚拟变量陷阱这里就简单了解,后面再深入讨论。


我的CSDN技术专栏:【机器学习100天】【K童鞋的爬虫笔记】

相关文章

  • 2019-02-17

    机器学习系列 机器学习100天 机器学习第1天:数据预处理 机器学习第2天:简单线性回归模型 机器学习第3天:多元...

  • 多元线性回归

    链接:多元线性回归 NG机器学习公开课笔记:机器学习笔记

  • 线性回归模型

    参考:1.使用Python进行线性回归2.python机器学习:多元线性回归3.线性回归概念 线性回归模型是线性模...

  • 机器学习-多元线性回归

    A. 用途: 可以用来预测,由多种因素影响的结果。 B. 建立公式: C. 求解方法: 方法1. Gradient...

  • 机器学习实践系列1——线性回归

    摘要:本文结合实际案例,介绍机器学习的线性回归模型,包括一元线性回归和多元线性回归,以及模型的评估。案例展示用Py...

  • 用人话讲明白梯度下降Gradient Descent(以求解多元

    文章目录1.梯度2.多元线性回归参数求解3.梯度下降4.梯度下降法求解多元线性回归 梯度下降算法在机器学习中出现频...

  • QR分解与线性回归

    1 一元回归与多元回归 任何一本初级水平的计量经济学、统计学或机器学习相关书籍,都会详细推导多元线性线性回归的解,...

  • 多元线性回归(multiple regression model

    之前学习了单一线性回归,这次主要研究多元线性回归,以及提高多元数据的模型精度的一些方法 1、什么是多元线性回归,我...

  • 机器学习算法——多元线性回归

    数据来源合鲸社区-工业产生的蒸汽量预测 1.1 背景描述[http://localhost:8888/noteb...

  • 机器学习第3天:多元线性回归

    联系我:ke.zb@qq.com我的技术博客:明天依旧可好-CSDN -----代码传送门----------数据...

网友评论

      本文标题:机器学习第3天:多元线性回归

      本文链接:https://www.haomeiwen.com/subject/nkjujqtx.html