写在开头

由于某些原因开始了机器学习,为了更好的理解和深入的思考(记录)所以开始写博客。

学习教程来源于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

  1. #导入库
  2. import pandas as pd
  3. import numpy as np
  4. #导入数据集
  5. dataset = pd.read_csv('50_Startups.csv')
  6. print(dataset[:])
  7. X = dataset.iloc[ : , :-].values
  8. Y = dataset.iloc[ : , ].values
  9. #将类别数据数字化
  10. from sklearn.preprocessing import LabelEncoder, OneHotEncoder
  11. labelencoder = LabelEncoder()
  12. X[ : , ] = labelencoder.fit_transform(X[ : , ])
  13. onehotencoder = OneHotEncoder(categorical_features = [])
  14. X = onehotencoder.fit_transform(X).toarray()
  1. #躲避虚拟变量陷阱
  2. X1 = X[ : , : ]

虚拟变量的内容在图片中有说明,这里不重复。

说实话,这里我不是很懂。这里居然采用的是去掉第一列的数据???有人能告诉我是为什么吗?

  1. #拆分数据集为训练集和测试集
  2. from sklearn.model_selection import train_test_split
  3. X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size = 0.2, random_state = )
  4. X1_train, X1_test, Y1_train, Y1_test = train_test_split(X1, Y, test_size = 0.2, random_state = )

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

这里和简单线性回归模型一样使用就好了。

  1. from sklearn.linear_model import LinearRegression
  2. regressor = LinearRegression()
  3. regressor.fit(X_train, Y_train)
  4. regressor1 = LinearRegression()
  5. regressor1.fit(X1_train, Y1_train)

Step 3: 在测试集上预测结果

Y_pred表示原始预测结果,Y1_pred表示躲避虚拟变量陷阱后的预测结果。

  1. Y_pred = regressor.predict(X_test)
  2. Y1_pred = regressor1.predict(X1_test)
  3. print(Y_pred)
  4. 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

  1. from sklearn.metrics import r2_score
  2. print(r2_score(Y_test, Y_pred))
  3. print(r2_score(Y1_test, Y1_pred))

0.9347068473282246

0.9347068473282292

可一看出,虽然差别不大,但是Y1_pred更精确一些。

总结

这一章的内容和上一章相似,主要在数据预处理时,有必要的话编辑虚拟变量并注意避免虚拟变量陷阱。至于这里为什么采用这种方式避免虚拟变量陷阱,不懂啊~

欢迎评论中提问,相关问题将在此更新!

机器学习——Day 3 多元线性回归的更多相关文章

  1. coursera机器学习笔记-多元线性回归,normal equation

    #对coursera上Andrew Ng老师开的机器学习课程的笔记和心得: #注:此笔记是我自己认为本节课里比较重要.难理解或容易忘记的内容并做了些补充,并非是课堂详细笔记和要点: #标记为<补 ...

  2. [机器学习Lesson4]多元线性回归

    1. 多元线性回归定义 多元线性回归也被称为多元线性回归. 我们现在介绍方程的符号,我们可以有任意数量的输入变量. 这些多个特征的假设函数的多变量形式如下: hθ(x)=θ0+θ1x1+θ2x2+θ3 ...

  3. 【TensorFlow篇】--Tensorflow框架初始,实现机器学习中多元线性回归

    一.前述 TensorFlow是谷歌基于DistBelief进行研发的第二代人工智能学习系统,其命名来源于本身的运行原理.Tensor(张量)意味着N维数组,Flow(流)意味着基于数据流图的计算,T ...

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

    前情回顾 [第二天100天搞定机器学习|Day2简单线性回归分析][1],我们学习了简单线性回归分析,这个模型非常简单,很容易理解.实现方式是sklearn中的LinearRegression,我们也 ...

  5. Andrew Ng机器学习课程笔记--week2(多元线性回归&正规公式)

    1. 内容概要 Multivariate Linear Regression(多元线性回归) 多元特征 多元变量的梯度下降 特征缩放 Computing Parameters Analytically ...

  6. 斯坦福机器学习视频笔记 Week2 多元线性回归 Linear Regression with Multiple Variables

    相比于week1中讨论的单变量的线性回归,多元线性回归更具有一般性,应用范围也更大,更贴近实际. Multiple Features 上面就是接上次的例子,将房价预测问题进行扩充,添加多个特征(fea ...

  7. 多元线性回归----Java简单实现

    http://www.cnblogs.com/wzm-xu/p/4062266.html 多元线性回归----Java简单实现   学习Andrew N.g的机器学习课程之后的简单实现. 课程地址:h ...

  8. machine learning 之 多元线性回归

    整理自Andrew Ng的machine learning课程 week2. 目录: 多元线性回归 Multivariates linear regression /MLR Gradient desc ...

  9. 【R】多元线性回归

    R中的线性回归函数比较简单,就是lm(),比较复杂的是对线性模型的诊断和调整.这里结合Statistical Learning和杜克大学的Data Analysis and Statistical I ...

随机推荐

  1. Python习题之列表排序,4种方法

    def sort_list_method_1(a): return sorted(a) print(sort_list_method_1([1, 4, 2])) def sort_list_metho ...

  2. 腾讯云:搭建 Node.js 环境

    搭建 Node.js 环境 安装 Node.js 环境 任务时间:5min ~ 10min Node.js 是运行在服务端的 JavaScript, 是基于 Chrome JavaScript V8 ...

  3. hdu 2089 记忆化搜索写法(数位dp)

    /* 记忆化搜索,第二维判断是否是6 */ #include<stdio.h> #include<string.h> #define N 9 int dp[N][2],digi ...

  4. hdu 5015 矩阵快速幂(可用作模板)

    转载:http://blog.csdn.net/wdcjdtc/article/details/39318847 之前各种犯傻 推了好久这个东西.. 后来灵关一闪  就搞定了.. 矩阵的题目,就是构造 ...

  5. bzoj4518征途 斜率优化

    征途这是一道十分经典的斜率优化 我们可以从题目中的方差来想,也就很容易的到这个式子 \[ans=m^2*\frac{\sum_{i=1}^{m}{(x_i-{\overline{x}})^2}}{m} ...

  6. Linux下汇编语言学习笔记71 ---

    这是17年暑假学习Linux汇编语言的笔记记录,参考书目为清华大学出版社 Jeff Duntemann著 梁晓辉译<汇编语言基于Linux环境>的书,喜欢看原版书的同学可以看<Ass ...

  7. hp 1810-24g switch reset

    Specific steps to execute the factory default reset on the switch are: 1. Using a small, thin tool w ...

  8. MyBatis參数格式化异常解决方式:MyBatisSystemException:

    MyBatis參数格式化异常解决方式:MyBatisSystemException: 问题:今天使用MyBatis开发查询功能时,前台传入查询条件明明是String类型,到后台就报错,提示格式化数值错 ...

  9. 架构师速成6.7-设计开发思路-uml

    uml是什么东西?统一建模语言.一门语言.是用来进行软件设计的一门语言. 事实上一门语言的诞生并不伟大,让大多数人都使用才足够伟大. uml就是一门伟大的语言.由于眼下软件设计的唯一语言就是它. UM ...

  10. BZOJ 1798: [Ahoi2009]Seq 维护序列seq (线段树乘法加法的混合操作)

     题目:点击打开链接 大意:一个数组.三个操作.第一种是区间[a,b]每一个数乘乘,另外一种是区间[a,b]每一个数加c,第三种是查询[a,b]区间的和并对p取摸. 两种操作就不能简单的仅仅往下传 ...