本文着重是重新梳理一下线性回归的概念,至于几行代码实现,那个不重要,概念明确了,代码自然水到渠成。

  “机器学习”对于普通大众来说可能会比较陌生,但是“人工智能”这个词简直是太火了,即便是风云变化的股市中,只要是与人工智能、大数据、云计算相关的概念股票都会有很好的表现。机器学习是实现人工智能的基础,今天早上看了美国著名演员威尔斯密斯和世界最顶级的机器人进行对话的视频,视频中的机器人不论从语言还是表情都表达的非常到位,深感人工智能真的离我们越来越近了,所以学习人工智能前沿技术的基础学科——机器学习就非常有必要了。

  首先,机器学习是一个比较容易理解的概念,就是让机器去模拟人的大脑去学习和思考,最终得出结论。举个栗子:某初中期末考试,有一道考题是给出直角坐标系中的两个点a(x1,y1),b(x2,y2),根据所给点求取过a,b两点的方程。初中文化的童鞋都知道,套用数学公式y=kx+b即可求出k和b就得到方程了。如何让计算机求出方程呢,这里就会涉及到非常简单的线性回归方法,也就是把已知的a,b点给计算机,然后告诉它用线性回归来拟合所给点,这时电脑也会给出你k和b的结果。也就是说电脑也会用老师告诉你的那套数学计算方法来求取方程,只不过是求取过程被编写成了计算机代码来执行。

  上面这个小例子简单的介绍了一下线性回归方法机器学习是怎么来执行的,当然,在我们实际采用线性回归来进行机器学习时会更复杂一些,首先得需要掌握一些机器学习中线性回归的基本知识。首先了解一下机器学习的基础知识,机器学习通常涉及到两个重要的参数,包括特征和标签,如何对这两个名词进行理解呢?特征我们可以认为是输入机器学习模型中的自变量,标签就是机器学习模型的输出结果。类比上面的y=kx+b,x就是特征,y就是标签,仅此而已。

  接下来我们需要认识一下在用python进行机器学习时候需要用到的包——sklearn包。这个包非常重要,里面有非常多的模型算法,简单点说你想要通过一堆特征得到一个模型时候你就直接调用这个包然后把特征丢进去好了,说的简单,其实在做的时候特费劲。。。但是基本过程就是这样。

  下面需要了解相关性这个概念,相关性分析会在很多机器学习中遇到,也就是研究事物之间发生有没有关系,关系有多大这么个事情。相关性有三种:分别包括正线性相关、负线性相关、非线性相关。如下图所示:

上图很直观看到了线性相关到底是咋回事,也就是说数据的趋势可以大致用一个直线来进行描述,虽然并不是所有的数据点都会在直线上,但是趋势就是直线。即趋势就是个最简单的方程y=kx+b。

说到相关性,最值得关注的有两个参数,1协方差,2相关系数。首先说协方差就是描述两个变量变化情况的量,如下示意图:

也就是你变大,我也变大,说明两个变量是同向变化,此时协方差为正;一个变量变大一个变量变小,说明两个变量是反向变化,协方差为负。从数值大小看,协方差数值越大,两个变量的同向程度也就越大,反之亦然。但是有的时候协方差会差上万倍,我们看到两个数的变化程度仍然相似,这时协方差就不适合来描述两个变量的相关性了。这时候我们需要用先关系数来描述两个数的相关性。计算公式如下图:

那么如何理解相关系数呢?首先标准差描述了变量在整体变化过程中偏离平均值的幅度。协方差除以标准差也就是把协方差中的变量变化幅度对协方差的影响剔除掉了,这样协方差也就标准化了,它反映的就是两个变量每单位变化的情况。

接下来就是逻辑回归的套路问题了,如下图:

代码都很简单,但是功能很强大,通过上述这三行代码就可以像上文举的小栗子那样直接求出k和b了,然后直线方程就出来了。虽然模型出来了,但是并不是所有的数据点都是完全在模型中,这时我们需要评估这个模型到底咋样,靠不靠谱,就用如下公式来计算:

决定系数R平方有两个功能:1、回归线拟合程度2、r平方越高,回归模型越精确。

以上就是线性回归的基本知识,相信你只要有一点点基本的统计知识加上一点点高中数学知识最后再有点耐心就会明白线性回归的原理。

python入门机器学习,3行代码搞定线性回归的更多相关文章

  1. 30行代码搞定WCF并发性能测试

    [以下只是个人观点,欢迎交流] 30行代码搞定WCF并发性能 轻量级测试. 1. 调用并发测试接口 static void Main()         {               List< ...

  2. 10行代码搞定移动web端自定义tap事件

    发发牢骚 移动web端里摸爬滚打这么久踩了不少坑,有一定移动web端经验的同学一定被click困扰过.我也不列外.一路走来被虐的不行,fastclick.touchend.iscroll什么的都用过, ...

  3. 如何用Python统计《论语》中每个字的出现次数?10行代码搞定--用计算机学国学

    编者按: 上学时听过山师王志民先生一场讲座,说每个人不论干什么,都应该学习国学(原谅我学了计算机专业)!王先生讲得很是吸引我这个工科男,可能比我的后来的那些同学听课还要认真些,当然一方面是兴趣.一方面 ...

  4. python爬煎蛋妹子图--20多行代码搞定煎蛋妹子图库

    如果说一个人够无聊的话... 就会做一些十分美(wei)丽(suo)的事情啦哈哈哈... 好的,话不多说,进入正题. 正如标题所示,我们今天的目标很简单: 代码要少,妹子要好. 步骤如下: 1. 首先 ...

  5. Tensorflow快餐教程(1) - 30行代码搞定手写识别

    版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/lusing/article/details ...

  6. [Unity Editor]10行代码搞定Hierarchy排序

    在日常的工作和研究中,当给我们的场景摆放过多的物件的时候,Hierarchy面板就会变得杂乱不堪.比如这样:    过多的层次结构充斥在里面,根层的物件毫无序列可言,整个层次面板显示非常的杂乱不堪,如 ...

  7. 7行代码搞定WEB服务

    作为一个 Java 程序猿,写代码久了,各种技术也就都尝试了一个遍. 先从 SSH1(Spring.Struts1.Hibernate)摸爬滚打转变到 SSH2(Spring.Struts2.Hibe ...

  8. BaseHttpListActivity,几行代码搞定Android Http列表请求、加载和缓存

    Android开发中,向服务器请求一个列表并显示是非常常见的需求,但实现起来比较麻烦,代码繁杂. 随着应用的更新迭代,这种需求越来越多,我渐渐发现了实现这种需求的代码的共同点. 于是我将Activit ...

  9. 100行代码搞定抖音短视频App,终于可以和美女合唱了。

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由视频咖 发表于云+社区专栏 本文作者,shengcui,腾讯云高级开发工程师,负责移动客户端开发 最近抖音最近又带了一波合唱的节奏,老 ...

随机推荐

  1. Django专题-AJAX

    AJAX准备知识:JSON 什么是 JSON ? JSON 指的是 JavaScript 对象表示法(JavaScript Object Notation) JSON 是轻量级的文本数据交换格式 JS ...

  2. Android studio 3.0安装与配置(看这一篇就够了)

    前言 为了完成数据库大作业,并充分利用学过的Java语言,决定开发一个简单完整成熟的安卓手机应用程序.于是下载安装Android Studio集成开发环境,第一次安装最新版本,因为墙的原因安装失败,第 ...

  3. 面向VBA一维数组的实用自定义函数

    UDF.dll包含了一组实用的用户自定义函数,提供了数组处理的快速方法,可以在VB6.VBS.32位VBA中调用. 看完如下的实例代码,就明白它的用处了. Private MyUDF As New U ...

  4. zabbix监控Linux服务器CPU使用率大于40%的时候报警(实践版)

    zabbix自带的模板里面有监控项,所以监控项就不用创建了,直接创建触发器就可以了,触发器细节如下: 名称:CPU使用率大于40% 严重性:严重 表达式:{121.201.54.50:system.c ...

  5. 吴裕雄--天生自然python学习笔记:python 用 Tesseract 识别验证码

    用 Selenium 包实现网页自动化操作的案例中,发现很多网页都因 需输入图形验证码而导致实验无法进行 . 解决的办法就是对验证码进行识别 . 识 别的方法之 一 是通过图形处理包将验证码的大部分背 ...

  6. 一个搜索框的小demo

    一.实时按照输入的搜索值显示与其匹配的内容,隐藏其它内容 <%@ Page Language="C#" AutoEventWireup="true" Co ...

  7. 邪恶的csrf

    关于csrf是啥我就不多说了 进入正文 场景模拟 场景一 在一个bbs社区里,用户在发言的时候会发出一个这样的GET请求: #!html GET /talk.php?msg=hello HTTP/1. ...

  8. GSON转换成Long型变为科学计数法及时间格式转换异常的解决方案

    直接上工具类了,简单实用 public class GsonUtils { private static Gson gson = null; static { if (gson == null) { ...

  9. Navicat for MySQL远程连接报10038的错误

    #################################################### """ 1.网络检测 1)ping主机可以: 2)telnet ...

  10. Struts2加载自定义库注意事项

    新建Struts2项目,添加Struts2的jar包时,往往通过导入自定义库的方式,导入自定义库时,有个地方必须要设置,否则项目无法正常执行,如图所示: 必须要按照上述方式对自定义库进行加载!