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

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

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

  首先,机器学习是一个比较容易理解的概念,就是让机器去模拟人的大脑去学习和思考,最终得出结论。举个栗子:某初中期末考试,有一道考题是给出直角坐标系中的两个点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平方越高,回归模型越精确。

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

原文地址:https://www.cnblogs.com/zxyza/p/10050888.html

时间: 2024-10-13 17:46:39

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

史上最牛逼的javascript俄罗斯方块,63行代码搞定啊

<!doctype html><html><head></head><body> <div id="box" style="width:252px;font:25px/25px 宋体;background:#000;color:#9f9;border:#999 20px ridge;text-shadow:2px 3px 1px #0f0;"></div> <script>

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

发发牢骚 移动web端里摸爬滚打这么久踩了不少坑,有一定移动web端经验的同学一定被click困扰过.我也不列外.一路走来被虐的不行,fastclick.touchend.iscroll什么的都用过,各有优劣,都不能一步到位.最后实在是被逼无奈,翻阅了不少资料,自定义了一个tap. 效果预览 废话不多说先上效果 移动端预览 一探真假 真的只有10行 插件是基于jQuery的,上代码. //自定义tap $(document).on("touchstart", function(e) {

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

编者按: 上学时听过山师王志民先生一场讲座,说每个人不论干什么,都应该学习国学(原谅我学了计算机专业)!王先生讲得很是吸引我这个工科男,可能比我的后来的那些同学听课还要认真些,当然一方面是兴趣.一方面是跨了学科听课,内容引人入胜,主要还是我懂得太少了,哈!我记得当时讲座的主题是有关孔子与齐鲁大地的关系,也正是那场讲座让我下决心跨学院选修了<中国古代思想文化史研究>,才让我对于诸子百家思想有了更深的认识,教授们轮番上阵,让我们学习到我们中华民族先贤智慧.也认识了历史学和中国哲学专业的同学,其中还

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

去年买了几本讲tensorflow的书,结果今年看的时候发现有些样例代码所用的API已经过时了.看来自己维护一个保持更新的Tensorflow的教程还是有意义的.这是写这一系列的初心. 快餐教程系列希望能够尽可能降低门槛,少讲,讲透. 为了让大家在一开始就看到一个美好的场景,而不是停留在漫长的基础知识积累上,参考网上的一些教程,我们直接一开始就直接展示用tensorflow实现MNIST手写识别的例子.然后基础知识我们再慢慢讲. Tensorflow安装速成教程 由于Python是跨平台的语言,

Python 5行代码 搞定加减法计算

五行代码实现加减法的计算 数据类型 首先简单普及一下代码中涉及到的两种数据类型 整型:可以理解为整数类型 字符串:带引号的都是字符串类型(这么说不严谨,为了方便理解) 上代码: num1 = input("请输入第一个数字") num2 = input("请输入第二个数字") new_num1 = int(num1) new_num2 = int(num2) print(new_num1 + new_num2) 1.前两条代码的意思就是每次输入一个数,input的功

GJM : AlloyTouch实战--60行代码搞定QQ看点资料卡

原文链接:https://github.com/AlloyTeam/AlloyTouch/wiki/kandian 先验货 访问DEMO你也可以点击这里 源代码可以点击这里 如你体验所见,流程的滚动的同时还能支持头部的动画?不断地加载新数据还能做到流畅的滑动!怎么做得的?使用AlloyTouch CSS 0.2.0及以上版本便可! 头部动画 加载更多 实现代码 var infoList = document.getElementById("infoList"), mockHTML =

几行代码搞定java生成解析二维码功能

最近公司要求扫描二维码和生成二维码的功能.而群里部分网友也提到了.我这里就写了一个demo,和大家分享.代码很简介,希望大家能够喜欢. 网友表示在网上搜索了很多,发现不是代码不全,就是jar不匹配. 我这里共享了一个zxing的2.2版本的例子,也提供了下载地址.实现代码如下: package com.herman.test; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundExcep

七行代码搞定 任意数据库中的数据迁移

var et = new EntityTransform(); et.SrcConn = "YuanKu"; et.DesConn = "mubiaoku"; et.AllowInsertIdentity = true; foreach (var item in EntityFactory.LoadEntities(et.SrcConn, true)) { var eop = EntityFactory.CreateOperate(item); et.Transfo

JavaScript的8行代码搞定js文件引入问题

单页面的操作,免不了会有各种jsp的嵌套问题,一个操作页面里面可能涉及到几十甚至上百个jsp页面. 平常我们对用到的js文件的引入,都会放到index的header里面.如图: 但是,让我们思考三个问题: 1.当业务需要,用到iframe的时候,那么iframe页面将不能再直接调用index引入的js文件 2.假如我这个项目有100个jsp页面,有一个js文件只有其中一个jsp要使用,我将这个js放到index的header区,每次一加载项目都会加载它,是不是延长了项目加载时间. 3.针对问题二