python入门机器学习,3行代码搞定线性回归

时间:2022-01-16 05:19:30

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

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

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

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

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

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

python入门机器学习,3行代码搞定线性回归

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

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

python入门机器学习,3行代码搞定线性回归

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

python入门机器学习,3行代码搞定线性回归

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

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

python入门机器学习,3行代码搞定线性回归

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

python入门机器学习,3行代码搞定线性回归

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

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

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

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

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

  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. Linux下设置Mysql数据库编码

    重装系统后,要装个mysql服务器,发现添加数据时,一直错误,查其原因,原来时编码问题.Google了一下,可都不太一样,可能时数据库版本问题吧. 查看数据库版本: select version(); ...

  2. CocoaPods 安装 使用

    1.开启 terminal 2.移除现有 Ruby 默认源 $ gem sources --remove https://rubygems.org/ 3.使用新的源 $ gem sources -a ...

  3. 只用@property定义一个属性speed,子类不能直接用_speed,需要在interface的成员变量列表里写上_speed

    //写法一: @interface Person : NSObject { } @property (nonatomic, strong) NSString *name; @end @implemen ...

  4. SharePoint 2010升级到sharePoint 2013后,人员失去对网站的权限的原因及解决方法。The reason and solution for permission lost after the upgrading

    昨天碰到了一个问题,一个网站在从SharePoint 2010升级到SharePoint 2013后,人员都不能登录了,必须重加赋权,人员才能登录,这样非常麻烦. 原因:是认证方式的问题.在Share ...

  5. win7,win8.1下hosts文件无法修改的快速解决办法

    一,找到C:\Windows\System32\drivers\etc,下hosts文件复制一份到桌面: 二,使用notepad++或其他编辑器修改桌面复制出来的那份HOSTS: 三,将修改后的文件复 ...

  6. [C]排序并插入

    /* 编写程序,在主函数中定义一个有10个元素的整型一维数组,用户输入9个数据,调用函数,对数组元素进行从小到大排序后,在函数中输入一个数,插入到数组中正确的位置,并输出. */ #include&l ...

  7. 移动端热更新方案(iOS+Android)

    PPT资源包含iOS+Android 各种方案分析:https://github.com/qiyer/Share/blob/master/%E7%83%AD%E6%9B%B4%E6%96%B0%E5% ...

  8. Java 数组的创建

    与C.C++不同,Java在定义数组时并不为数组元素分配内存,因此[ ]中无需指定数组元素的个数,即数组长度. 定义一个数组有两种方式: int[] array; int array[]; 对于如上定 ...

  9. class in Bad version

    异常信息:class in Bad version:jdk版本不对

  10. io重定向打开关闭 Eclipse中c开发printf无法输出解决办法

    if(freopen("e:\\lstm-comparec\\lstm\\lstm\\output.txt","a",stdout)==NULL)fprintf ...