机器学习——Day 3 多元线性回归
写在开头
由于某些原因开始了机器学习,为了更好的理解和深入的思考(记录)所以开始写博客。
学习教程来源于github的Avik-Jain的100-Days-Of-MLCode
英文版:https://github.com/Avik-Jain/100-Days-Of-ML-Code
中文翻译版:https://github.com/MLEveryday/100-Days-Of-ML-Code
本人新手一枚,所以学习的时候遇到不懂的会经常百度,查看别人的博客现有的资料。但是由于不同的人思维和写作风格都不一样,有时候看到一些长篇大论就不想看,杂乱不想看(实力懒癌患者+挑剔)。看到别人写的不错的就不想再费时间打字了,所以勤奋的找了自认为简洁明了的文章分享在下面,希望能帮助到大家。
注意这是一篇记录博客,非教学。

数据部分截图:

Step 1:数据预处理
部分详情请看前两篇:
Day1: https://www.cnblogs.com/hidari26/p/10923822.html
Day2:https://www.cnblogs.com/hidari26/p/10927574.html
#导入库
import pandas as pd
import numpy as np
#导入数据集
dataset = pd.read_csv('50_Startups.csv')
print(dataset[:])
X = dataset.iloc[ : , :-].values
Y = dataset.iloc[ : , ].values
#将类别数据数字化
from sklearn.preprocessing import LabelEncoder, OneHotEncoder
labelencoder = LabelEncoder()
X[ : , ] = labelencoder.fit_transform(X[ : , ])
onehotencoder = OneHotEncoder(categorical_features = [])
X = onehotencoder.fit_transform(X).toarray()
#躲避虚拟变量陷阱
X1 = X[ : , : ]
虚拟变量的内容在图片中有说明,这里不重复。
说实话,这里我不是很懂。这里居然采用的是去掉第一列的数据???有人能告诉我是为什么吗?

#拆分数据集为训练集和测试集
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 = )
X1_train, X1_test, Y1_train, Y1_test = train_test_split(X1, Y, test_size = 0.2, random_state = )
Step 2: 在训练集上训练多元线性回归模型
这里和简单线性回归模型一样使用就好了。
from sklearn.linear_model import LinearRegression
regressor = LinearRegression()
regressor.fit(X_train, Y_train)
regressor1 = LinearRegression()
regressor1.fit(X1_train, Y1_train)
Step 3: 在测试集上预测结果
Y_pred表示原始预测结果,Y1_pred表示躲避虚拟变量陷阱后的预测结果。
Y_pred = regressor.predict(X_test)
Y1_pred = regressor1.predict(X1_test)
print(Y_pred)
print(Y1_pred)
Step 4: 输出误差
最后我们比较一下两个数据哪个得出的模型更好,更精确。这里介绍一个新的类 sklearn.metrics.r2_score 相关指数R2(也称决定系数 coefficient of determinantion), 表示一元多项式回归方程拟合度的高低,或者说表示一元多项式回归方程估测的可靠程度的高低。越接近1,模型越好;越接近0,模型越差。
英文说明:https://scikit-learn.org/stable/modules/generated/sklearn.metrics.r2_score.html
from sklearn.metrics import r2_score
print(r2_score(Y_test, Y_pred))
print(r2_score(Y1_test, Y1_pred))
0.9347068473282246
0.9347068473282292
可一看出,虽然差别不大,但是Y1_pred更精确一些。
总结
这一章的内容和上一章相似,主要在数据预处理时,有必要的话编辑虚拟变量并注意避免虚拟变量陷阱。至于这里为什么采用这种方式避免虚拟变量陷阱,不懂啊~
欢迎评论中提问,相关问题将在此更新!
机器学习——Day 3 多元线性回归的更多相关文章
- coursera机器学习笔记-多元线性回归,normal equation
#对coursera上Andrew Ng老师开的机器学习课程的笔记和心得: #注:此笔记是我自己认为本节课里比较重要.难理解或容易忘记的内容并做了些补充,并非是课堂详细笔记和要点: #标记为<补 ...
- [机器学习Lesson4]多元线性回归
1. 多元线性回归定义 多元线性回归也被称为多元线性回归. 我们现在介绍方程的符号,我们可以有任意数量的输入变量. 这些多个特征的假设函数的多变量形式如下: hθ(x)=θ0+θ1x1+θ2x2+θ3 ...
- 【TensorFlow篇】--Tensorflow框架初始,实现机器学习中多元线性回归
一.前述 TensorFlow是谷歌基于DistBelief进行研发的第二代人工智能学习系统,其命名来源于本身的运行原理.Tensor(张量)意味着N维数组,Flow(流)意味着基于数据流图的计算,T ...
- 100天搞定机器学习|Day3多元线性回归
前情回顾 [第二天100天搞定机器学习|Day2简单线性回归分析][1],我们学习了简单线性回归分析,这个模型非常简单,很容易理解.实现方式是sklearn中的LinearRegression,我们也 ...
- Andrew Ng机器学习课程笔记--week2(多元线性回归&正规公式)
1. 内容概要 Multivariate Linear Regression(多元线性回归) 多元特征 多元变量的梯度下降 特征缩放 Computing Parameters Analytically ...
- 斯坦福机器学习视频笔记 Week2 多元线性回归 Linear Regression with Multiple Variables
相比于week1中讨论的单变量的线性回归,多元线性回归更具有一般性,应用范围也更大,更贴近实际. Multiple Features 上面就是接上次的例子,将房价预测问题进行扩充,添加多个特征(fea ...
- 多元线性回归----Java简单实现
http://www.cnblogs.com/wzm-xu/p/4062266.html 多元线性回归----Java简单实现 学习Andrew N.g的机器学习课程之后的简单实现. 课程地址:h ...
- machine learning 之 多元线性回归
整理自Andrew Ng的machine learning课程 week2. 目录: 多元线性回归 Multivariates linear regression /MLR Gradient desc ...
- 【R】多元线性回归
R中的线性回归函数比较简单,就是lm(),比较复杂的是对线性模型的诊断和调整.这里结合Statistical Learning和杜克大学的Data Analysis and Statistical I ...
随机推荐
- The C Programming Language-4.1
下面是c程序设计语言4.1代码以及我的一些理解 strindex函数,通过嵌套两次循环,在s[ ]和t[ ]两个数组对映元素相等且t[ ]尚未遍历完毕的情况下,不断循环,最终返回正数或-1 代码如下 ...
- 移动端placeholder不能垂直居中解决方案
1.问题描述 问题如图:手机端placeholder文字偏上,垂直方向不居中,input光标显示偏上解决IE下不支持placeholder属性 2.解决方案 css .phoneNumber inpu ...
- Python面向对象之私有属性和方法
私有属性与私有方法 应用场景 在实际开发中,对象的某些属性或者方法 可能只希望在对象的内部被使用,而不希望在外部被访问到: 私有属性 就是对象不希望公开的属性: 私有方法 就是对象不希望公开的方法: ...
- Java核心技术 卷一 复习笔记(甲
1.数据类型包含八种基本类型,其中四种整形(int/short/long/byte),两种浮点类型(float/double), 一种用于表示Unicode编码的字符类型char,一种表示真值的boo ...
- Vuex实践小记
1.目录结构 2.开始(安装vuex) npm install vuex --save 3.编辑store/index.js(创建一个Vuex.store状态管理对象) import Vue from ...
- IIS301重定向:将不带www的域名跳转到带www上
首先你的域名有这两条解析记录 进入服务器IIS,添加2个站点,如下图 第一个正常绑定你的域名:www.baidu.com 第二个绑定不带www的域名:baidu.com 然后点开ncgd-no-www ...
- [luoguP1103] 书本整理(DP)
传送门 以 去掉多少个 为阶段不好做. 去掉 k 个也可以变成选 n - k 个 f[i][j] 表示前 i 个数中 选 j 个的最优解,a[i] 必选 f[i][j] = min(f[i][j], ...
- tmux使用入门
tmux是Linux中窗口管理程序,适用于终端复用,尤其适合远程连接.最近,我正苦闷与ssh自动超时退出和broken pipe,决定投入tmux怀抱. 使用tmux最直接的好处,便是可以在一个远程连 ...
- [USACO06FEB]数字三角形
题目描述 FJ and his cows enjoy playing a mental game. They write down the numbers from 1 to N (1 <= N ...
- B树、B-树、B+树、B*树介绍,和B+树更适合做文件索引的原因
今天看数据库,书中提到:由于索引是采用 B 树结构存储的,所以对应的索引项并不会被删除,经过一段时间的增删改操作后,数据库中就会出现大量的存储碎片, 这和磁盘碎片.内存碎片产生原理是类似的,这些存储碎 ...