自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

方老师的博客

计算机软件博士,致力于计算机教育、科研和项目开发

  • 博客(74)
  • 收藏
  • 关注

原创 从傅立叶变换到奥运五环

从极坐标变换的角度给出了傅立叶变换的本质,然后加以利用,从而绘画出了许多不可思议的图形。

2024-02-15 02:17:46 535

原创 关于程序员的年龄

在国内程序员一般到了35岁左右就会转行。对这个现象我提几个观点:在欧美等发达国家,五六十岁的软件工程师比比皆是。在it公司里放眼望去都是花白头发的程序员。这造成了一个结果,就是国外的软件大多是由经验丰富的工程师开发出来的。而在国内,大多数软件都是由经验不足的,二三十岁的程序员开发出来的。所以看国内程序员的代码大多显得非常稚嫩,不老练。不是说功能完不成,而是说不专业,扩展或者是纠错都很麻烦。比如说很多人喜欢把几百行代码写在一个函数里,这个毛病怎么也改不了。经验是要靠时间积累的。国内的项目经理、总监大多不

2021-12-14 14:08:33 1961

原创 寥寥几段文字就说清楚了什么是精确度和召回率

学习和研究机器学习、深度学习的人经常会需要对AI模型的效果进行判定,其中最常用到的判定依据是精确度(Precision,又称为准确度、精准度)和召回率(Callback)。到底什么是精确度和召回率?它们的本质区别是什么?本文讨论这些问题。精确度和召回率都是用来判断AI模型预测效果的指标,取值范围都是[0, 1],越接近0表示模型的效果越差,0表示模型全部预测错误;越接近1表示模型的效果越好,1表示全部预测正确。两者的本质区别在于,精确度是针对模型的输出进行计算的,而召回率是针对模型的输入计算的。

2021-12-02 12:57:55 3958

原创 从快速排序到求序列中最大的N个数

给定一个无序的序列,求其中最大的N个数,这是一个经常遇到的实际问题。下面,我们先从快速排序说起。我们知道,快速排序的平均排序速度是最快的,其原理就是任取序列中的一个数M,把剩下的数分为两组,一组是大于等于M的数,另一组是小于M的数,显然,在最终的结果中,M应该居于中间位置。接着,对这两组数分别递归地调用快速排序即可。比如,设有无序序列{9, 2, 11,7,5,1,4,6},第一步,任取一个数,比如说5,再按照上述规则把剩下的数分为两组,得:{2,1,4} 5 {9,11,7,6}其中5居于

2021-11-25 15:56:22 4955

原创 用遗传算法解决中国邮递员问题

所谓中国邮递员问题,见下面无向图 ,假设邮递员初始位置在A点,现在他要访问所有其他4个结点以便投递邮件,结点与结点之间的距离已经标注在边上。问:邮递员应该依次访问哪些结点才能以最短路径遍历所有结点,并且最后还能回到原点。比如,假设邮递员依次访问ACDEBA,则总路径长度是8+7+7+12+10=44。这里要求路径中每相邻的两个结点之间存在一条边,且起点和终点都是邮递员的起始结点,路径覆盖了邮递员所有能到达的结点。ACEDBA就不是一条合法的路径,因为C和E之间没有边。ACDEBA是一条合法的路.

2021-11-08 12:20:13 4348 1

原创 风力发电会影响气候?

先看看以下报道:“风力发电可以引起气候变化?”,对这种说法大家笑笑即可,不要太当真。三峡大坝刚做起来的时候,还有人担心这么大的水体集中在一起会引起地球重力场失衡。有些人天生是屁股决定脑袋的,风力发电动了某些人的蛋糕,他们就雇人搞出了这样的论调。我看这些人从此也不要坐飞机了,因为飞机不但吹起了更大的风力,还燃烧了汽油增加了CO2的排放。按照这些人的论调,风力发电在台风季节还是要搞的,起码可以降低台风的速度不是?科学是科学,商业是商业,屁股坐在商业利益上却对科学指手画脚,建议还是回到学校里好好读...

2021-11-04 13:50:37 985

原创 计算的本质

1. 图灵机据说牛顿在树下被一只苹果砸中,因为想到了万有引力。当20世纪上半叶的数学家们思考关于计算的问题时,小孩子写的如下图所示的乘法算式会不会给他某种提示?图1 一个计算的示例是的,在如今的计算机科学家看来,这样简单的算式的确蕴含了计算的本质。1940年代的图灵为了说明什么是计算的本质,发明了图灵机。图灵机是个抽象的机器,这个机器的下方有一个读写头,读写头可以读写一个纸带,纸带上面有很多字符。读写头可以读取当前字符,也可以把它改写为任意指定的字符。图2 图灵机示例在图灵机..

2021-08-30 15:20:16 1654

原创 Python协程及其应用

请看代码片段:def mm(n): result = [] for e in range(n): result.append(e) return resultif __name__=='__main__': for p in mm(100): print(p)这个例子用来输出0~99共100个整数。代码看起来没有任何问题,但是如果把常数100改为1亿,则运行时要过很久才会打印出数据,更重要的是,内存中要准备好1亿个单位空间用来存放这1亿个数。

2021-08-27 18:04:22 343

原创 树和树林的实现,不懂数据结构的人也能看懂

树常用来表达一对多的关系,比如企业里从总经理到部门到员工的关系,军队中从军、师、团到营、连、排、班的关系,XML文档中各种文档元素之间的组成关系等等都可以用树表示。下图4给出了树的一个示例:树的一个例子树由结点构成,有一个唯一的结点称为根,包括根在内每个结点可以有0个、1个或者多个子结点,子结点又可以有自己的子结点,依此类推,构成了一个树根在上的倒过来的树形结构。除了根之外,每个结点都有且仅有一个父结点。没有子结点的结点称为叶子。除了根和叶子之外,其他结点称为中间结点。树以及树所构成的集..

2021-08-26 14:39:54 221

原创 初学者学习计算机编程有哪些关键技术必须掌握

第一,你必须掌握高等数学的知识,包括微积分、概率论和线性代数。并不是说你学过高等数学之后就一定会在工作中使用它,而是说高等数学是锻炼人的逻辑思维、形象思维的最好工具。比如微分和积分的概念就是人类思想史上的一次大解放,你怎么能错过这样一个从根本上提高思维能力的机会呢?第二,要掌握计算机组成的基本知识,包括数字逻辑,计算机体系结构,二进制,寄存器,堆栈,内存管理,指令,汇编语言等等,了解CPU的结构以及是如何工作的。一句话,就是理解计算的本质。刘慈欣在《三体》里讲了一个故事,一位牛人穿越到秦朝之后,秦始皇给

2021-08-24 09:56:09 1939

原创 Python解决最长子串问题

设有两个字符串abaabba和bbbabaa,问它们的最长子串是什么?这个问题的一个应用就是比较两个病毒的基因,从而给出两者的相似度。这里我们用递归方法解决这个难题。输入参数显然是两个字符串s1和s2。递归边界是s1和s2中至少有一个是空字符串[1],此时它们的最大子串就是空字符串。递归假设是只要s1或s2中少了一个字符,则程序总能计算出它们剩余部分的最长子串。递归推导时可以把s1的第一个字符c拎出来单独考虑。如果最长子串中不含有c,则可以递归地求s1的剩余部分与s2的最长子串r1。否则可以针对s2

2021-08-24 08:57:50 1273

原创 抛物线和汽车大灯

现在汽车已经进入千家万户了。大家注意到车灯了吗?今天的问题跟光的反射以及抛物面有关。下图显示了车灯的切面:其中O点是灯芯所在位置,它发出的光线经过灯壁反射后射出。射出的光线与地面平行。我们的问题是:灯壁所形成的曲线是什么曲线,为什么?答案抛物线。说明以O为原点建立如下图所示的直角坐标系,光线与灯壁的交点A的坐标是(x, y),见下图:过A做切线BD,D是切线与y轴的交点。因为光线的入射角和出射角相等,所以:由于CA是一条与y轴平行的直线,所以,,代入上式有:.

2021-08-23 12:49:19 754

原创 如何证明弹簧振子的震动周期与初始位置无关

如下图所示的一个与弹簧相连的小球,小球称为振子,弹簧的质量被忽略。弹簧的另一端与墙体相连。弹簧和振子都放在光滑(即摩擦力忽略不计)的水平平面上,弹簧处于松弛状态(既不拉伸也不压缩)。现在把振子拉倒B点,然后松手,振子被弹簧拉扯,速度逐渐加快,直到经过O点。之后振子依靠惯性挤压弹簧,速度逐渐变慢到达C点后为零。之后振子就会在B、C之间来回振动。|BO| = |CO|成立。假设振子的质量是m(千克),弹簧的弹性系数是k(牛顿/米),|BO|的长度等于c,我们的问题是:请用微积分的办法给出振子速.

2021-08-23 09:59:07 1518

原创 掰开来揉碎了细细讲解KMP算法,没学过数据结构的人也能懂

大家一定使用过Git或者SVN管理过项目的代码,其中有一个主要功能就是比较代码的异同。编写这样一个程序也许不是太难,难的是参与比较的代码一般都比较长,比较可能需要花很长时间。但是,Git或者SVN都能几乎在一瞬间完成比较,速度之所以这么快是因为它们的基础算法中使用了KMP算法,该算法还在基因序列对比中发挥了重要作用。本文从最本质的角度剖析了KMP算法,帮助大家深刻理解它。1. 字符串的暴力匹配算法字符串匹配是指在一个字符串main上寻找子串sub的过程。比如假设main=‘abcabdebx#HA'

2021-08-19 21:50:06 880

原创 传统人工智能中的三大问题

基于神经网络和大样本统计规律的深度学习越来越走入瓶颈,人工智能的发展越来越向基于符号推理和因果推理的传统人工智能回归。AI算法工程师不能把眼光仅仅局限在海量样本的统计规律上,而应该学习并掌握基于符号推理和小样本学习的传统人工智能技术。否则,当深度学习的热点一过,你很可能无法适应企业和市场对AI的新的需求。本文介绍了传统人工智能要解决的三大问题:问题求解、博弈和谓词逻辑。它们都是基于符号推理和白盒推理的。了解相应的解决方案和算法有助于算法工程师开拓眼界,加深对算法本质的理解,增加解决问题、适应未来需求的能

2021-08-18 13:19:50 4210

原创 中序遍历及其递归程序非递归化

只要翻开任意一本《数据结构》书,翻到二叉树那一章,你可以看到一个典型的二叉树中序遍历算法形如:代码1: 经典的二叉树中序遍历算法typedef struct _Node { struct _Node *left, *right; char value;} Node;void valueInMiddle(Node *root) { // 中序遍历二叉树 while(1) { while(root != NULL) { push.

2021-08-17 18:45:15 924

原创 Python装饰器应用示例

面向侧面的程序设计方法(Aspect Oriented Programming, AOP)是面向对象技术之后流行起来的一种程序设计技术,目的是从模块的侧面对模块的运行进行监督、统计、权限检查异常处理等工作。AOP主要是高级软件工程师在进行系统软件、框架、平台的开发时使用。假设需要对程序员编写的每一个函数进行跟踪,看看哪些函数被调用了,调用时的参数和返回值分别是什么。要实现这个功能有两个方法:第一,让程序员在他/她写的每个函数里增加上述操作。显然这个方法相当麻烦,并且如果想要修改跟踪逻辑,则势必要更改所有

2021-08-16 08:37:29 383

原创 深度学习之殇

如今,谈到人工智能,人们第一个想到的是深度学习。大量的人力物力财力被投入到深度学习中去。但事实上,深度学习本质上是对大量样本统计规律的归纳,被称为统计学习。统计学习是AI的初级阶段,统计学习之上还有其他学习,从高到低分别是: 数学归纳法 进化 学习 逻辑推理 经验学习 统计学习 经验学习是什么?经验学习是指基于贝叶斯公式和贝叶斯网络的学习。其本质是用新发生的现象、事实和证据改变人们对事物本质的老的认识。比如,

2021-08-12 16:57:27 292

原创 编程是不是只要懂语法就行了?

编程只要懂语法就行了,说这话的不是别人,是90年代我读本科时的一位计算机老师,当时他是名牌大学计算机专业毕业的硕士。这个说法即使是30年后的今天也依然有一定市场。但其实这是一个错误且十分有害的看法,先说它错在哪。程序设计一定要有计算机理论和数学支持,比如要有《数据结构》、《计算机组成》、《人工智能》、《编译原理》、《操作系统》、《软件工程》、《微积分》等方面的知识。有人可能会不服气的说,也有高中生没学过这些知识但照样可以编出功能强大的程序?是吗?我同意的确有非专业的人员从事编程工作也做得很好,这样的

2021-08-11 10:04:01 400

原创 韩信点兵问题,即使没有学过数论也能看得懂

这个问题又叫中国剩余问题。传说韩信有一次想知道自己有多少士兵,由于士兵太多了,直接数数太慢太麻烦了。他让所有士兵每5个人排成一排,结果剩余3个人;每7个人排成一排,结果剩余5个人;每11个人排成一排,结果剩余5个人;每13个人排成一排,结果剩余9个人。问韩信一共有多少兵。有趣的是,类似的问题在《射雕英雄传》里也提到过:瑛姑因为思考这样的问题白了头发,结果还是黄蓉解开了这个问题,并因此顺利地探知了一灯大师的下落。现在考验你是否像黄蓉一样聪明的时刻到了。答案698人说明5个人一排剩余3个人,

2021-08-09 17:26:00 629

原创 递归程序设计方法及其优化,程序设计王冠上的明珠

目录1. 递归的本质2. 河内塔问题2. 兔子问题和斐波那契数列3. 通配符匹配问题4. 排列组合问题5. 人字形铁路问题6. 递归程序优化之一——避免重复递归7. 递归程序优化之二——消除死循环7.1 倒水问题7.2 倒水办法8. 八皇后问题9. 求24点递归程序设计方法(简称递归)是指函数直接或者间接调用自己的现象。递归是一种有趣的程序设计方法,往往区区几行代码就能达到神奇的效果。递归同时是一种非常数学化的方法,其背后有着深刻的数学原理。递归是程序设计

2021-08-07 08:45:37 2201

原创 Python3.9全部47个字符串函数的说明

作为脚本语言,Python具有强大的字符串处理能力,下面是Python3.9全部47个字符串函数的说明(函数名中用中括号[]括起来的部分表示可选的语法成分): 函数 说明 示例 1 s.capitalize() 返回s首字母大写的结果 ‘abc'.capitalize()=='Abc' '中国abc'.capitalize()=='中国abc' 2 s.casefold() 返回与s等价的一个字符串以便在忽略

2021-08-05 11:41:42 301

原创 二分法和黄金分割法的区别和联系,附Python代码

二分法二分法的本质是求函数y=f(x)在y*处的解x*,使得f(x*)=y*。也就是说二分法的目的是求函数在确定值y*处的解。假设g(x) = f(x) - y*,则有g(x*) = f(x*)-y* = 0,所以求函数在确定值y*处的解等价于求函数在0处的解。设有函数f(x),且有f(a) < 0 和f(b) > 0,则求x*使得f(x*)=0的Python代码如下:def solve_with_binary(func, a, b, epslon=0.0001): """

2021-08-03 14:03:00 3203 1

原创 Python3.9全部73个内置函数说明

以下是Python3.9的常用内置函数和内置变量的说明: 内置函数 说明 示例 1 abs(x) 求x的绝对值 abs(-3.4) == 3.4 2 all(x) 判断中的序列x中的每个元素是否都是True,如果元素也是一个序列,则递归地判断 all([True,True])==True all([True, False])==False all((True,[True]))==True all(((Fal..

2021-08-02 17:18:29 3266 13

原创 买100送50相当于打了几折?

买100送50是不是相当于打五折?不,错了,仅相当于打了6.7折。为什么?因为买100送50一般送的是相当于50元的消费券,而不是50块钱。你还必须把这50元券花出去,再买回来价值50元的商品才行。所以,相当于你花了100元钱,买回来150元的商品,所以打折数是6.7折,也就是所有的商品以2/3的价格卖给你。不是你心目中的打5折,所有商品半价卖给你。很多商家利用顾客不懂数学就玩这个把戏,常常让你多花了钱还以为自己占了便宜。如果送你的不是50元券,而是货真价实的50块钱,相当于你用50元钱购买了100

2021-07-30 17:36:53 25258

原创 五猴分桃问题的数学解

上篇博客(https://fanglin.blog.youkuaiyun.com/article/details/119173258)中谈到了五猴分桃问题:有5只猴子上山去摘桃,一直摘到天黑。5只猴子把所有的桃子放在一起,然后约定第二天一早来分桃。第二天早晨,来了一只猴子。他等了一会后心想:不如干脆我把桃子分了吧。于是他把桃子分成了五等份,分完后发现多了一只桃子。他想:我这么辛苦把桃子分了,这多出的一只桃子理应归我!于是他吃了这只桃子,然后带上一等份桃子,走了!过了一会,第二只猴子来了。他也等了一会。不耐烦之后也把

2021-07-30 09:12:46 2068

原创 计算机内部如何实现递归和函数调用:计算机组成基本知识之二

递归函数和普通函数的本质区别是什么?计算机内部会对递归函数(包括直接递归和间接递归)做特别处理吗?本节回答这些问题。1.计算机组成要想了解计算机怎么实现函数调用和递归,就必须了解计算机的组成。下图给出了计算机组成结构示意图:图1 计算机内部的组成结构示意我们通常所说的CPU其核心就是一个加法器,可以执行二进制加法以及位运算。有两个加法寄存器负责向它提供数据,一个结果寄存器用来保存加法或者位运算的结果。减法、乘法和除法乃至更高级的乘方等等运算都是通过加法来实现的。乘法和乘方运...

2021-07-29 09:48:44 1311

原创 Python解决五猴分桃问题

有5只上山去摘桃,一直摘到天黑。5只把所有的桃子放在一起,然后约定第二天一早来分桃。第二天早晨,来了一只猴子。他等了一会后心想:不如干脆我把桃子分了吧。于是他把桃子分成了五等份,分完后发现多了一只桃子。他想:我这么辛苦把桃子分了,这多出的一只桃子理应归我!于是他吃了这只桃子,然后带上一等份桃子,走了!过了一会,第二只猴子来了。他也等了一会。不耐烦之后也把桃子分成了五等份,也发现多一只桃子。他同样吃了那桃子之后也带走了一等份桃子。后来,第三、第四、第五只猴子都是先五等分桃子,然后吃掉多出来的一个桃

2021-07-28 11:01:38 4226

原创 为什么C++和Python都支持多继承,Java却不能?

C++和Python都允许一个类继承多个父类而Java却不允许,对这个现象不少人解释说是Java为了简单起见。这个解释不能说错,但流于浅显。事实上Java这样做是不得已而为之。如果强行允许多继承,Java整个系统就会崩溃。单继承如何定位在不同类中定义的成员变量解释这个现象必须从高级语言如何定位对象的成员变量开始。假设obj是类P的对象,存于内存100开始的位置,obj中含有成员变量f1、f2和f3,长度分别是4、2、3。在不考虑其他因素(比如内存字对齐)的情况下,obj在内存中的存储是这样的:1

2021-07-27 10:36:09 1212 2

原创 Python解决数字棒球游戏

数字棒球游戏是这样玩的:先由甲在心里想一个4位数,比如3092,不足4位的以0补足,比如12被认为是0012,这个数被称为目标。乙来猜这个数,方法是这样的,他先随机对甲说一个数,比如5382,甲告诉乙5382里有几个ball几个strike。所谓ball是指5382中有几个数出现在目标中,因为数字3和2都出现过,所以这里有ball=2。所谓strike是指在这2个ball中有几个位置是正确的。比如,上例中数字2的位置正确,所以strike=1。乙随后会进行分析,然后再猜一个数,甲再告诉乙ball和strik

2021-07-26 10:11:05 908

原创 Python的可变参数和关键字参数

可变参数强类型面向对象语言如C++和Java都有重载(Overload)机制,允许在同一个类内定义多个同名的函数,只要它们的参数不同(或者参数数量不同,或者对应参数的类型不同)。Python是弱类型语言,所以没有直接实现重载机制,但是却实现了一个更强大的机制:可变参数。下面看例子:def mm1(*a): print(a)mm1(12, 34, 56, 'abc', 'xyz')运行结果是:(12, 34, 56, 'abc', 'xyz')其中*a表示a是一个可变参数,

2021-07-25 11:49:33 386

原创 Python和贝叶斯网络:贝叶斯理论(6)

在前面的章节中我们学习了贝叶斯网络的基本知识。本章将利用Python建立如下图所示的贝叶斯网络:在Python中建立贝叶斯网络要引入pgmpy包和pandas包,然后编写如下代码:from pgmpy.models import BayesianModelfrom pgmpy.factors.discrete.CPD import TabularCPDimport pandas as pdm = BayesianModel() # 创建一个贝叶斯网络m.add_edge('爱情'.

2021-07-24 16:47:48 1267 2

原创 贝叶斯网络的独立性:贝叶斯理论(5)

有些贝叶斯网络联合概率的计算是可以化简的。比如:a、b、c的取值范围分别是、和,i、j、k=1, 2, 3, ...... 。求已知情况下的概率。解:上图的联合概率计算公式是:,代入(1)式得: 其中代入上式得:也就是说,在已知b的情况下a的概率的计算与c无关,简称为a与c独立。这样就大大简化了计算。总结起来说,在已知b=B的情况下,下面每个图中的a与c独立:这意味着,此时求a的每个状态的概率完全可以...

2021-07-23 11:00:56 1383

原创 Python计算24点:递归程序设计艺术(9)

给定4个1~13之间的数,用任意多的加减乘除和括号计算这4个数,使得最终结果是24,这就是著名的24点问题。本节课的目的是编写一个程序,能够用给定的4个数凑出24。也就是说,让电脑而不是人脑计算24点。这一题看起来难度很大,但是只要坚持递归三步曲问题一样可以解决。首先把原问题分解为两个子问题:1) 4个数能凑出哪些表达式,以及每个表达式的值;2)上述表达式中哪些的值是24。第二个问题好解决。第一个问题可以用一个递归程序解决,首先明确第一个问题的参数是nums,表示当前可以使用的数的列表。注意这里只...

2021-07-22 14:11:49 679

原创 贝叶斯网络的联合概率到底有什么用:贝叶斯理论(4)

上篇博客我们描述了如何计算贝叶斯网络联合概率的方法。这里再举一个例子:上图这个例子中,事件a导致了b和c的发生。假设a有、、三种状态,b有、两种状态,c有、,a的每个状态的先验概率是: 0.3 0.5 0.2 b对a的条件概率是: 0.4 0.6 0.1 0.9 0.8 0.2 c对a的条件概率是: 0.5 0.5 0 1.0

2021-07-22 10:19:12 3343 7

原创 Python解决八皇后问题:递归程序设计艺术(8)

上图展示了一个8*8的国际象棋棋盘,八皇后问题就是指在该棋盘上放8个皇后,使得任意两个皇后不在同一行也不在同一列,还不在同一斜线(与水平线呈45。角)或反斜线(与水平线呈135。角)上。换句话说,就是避免任意两个皇后之间对杀,因为国际象棋中皇后可以任意横走、竖走、斜走,且不受长度限制。按照递归三步曲可以解决这个问题。首先明确输入参数是index和points,前者表示当前要考虑的是第几个皇后(从0开始数),后者是一个列表(list),包含了之前的所有皇后的坐标。当前皇后的位置要避免与她们发生冲突。...

2021-07-21 11:06:58 368

原创 面试精选:很简单的请人帮忙问题,答案却让你大吃一惊

A、B、C三个人一起完成一个工作。每个人的工作技能和效率都是一样的。但是A由于临时有事不能参加了,于是他出900块钱请B、C两人代替他干完。于是B、C两人开始这项工作。首先B干了4小时,然后C接着干了5小时。请问两人应该怎样分配这900块钱?答案B应该拿300块钱,C应该拿600块钱说明第一眼看这道题,很容易凭直觉给出答案,B得400块,C得500块,但实际上应该这样思考:B干了4小时,然后C接着干了5小时,这说明这个工作一个人需要9小时才能干完。平均每人需要干3小时。B干了4小时,多干了1

2021-07-21 10:37:26 874

原创 贝叶斯网络——贝叶斯理论(3)

对贝叶斯公式大家可能已经比较熟悉了,贝叶斯网络又是什么东东?贝叶斯网络又叫概率图模型,是图灵奖得主Judea Pearl于1985年首先提出的。现在大火的深度学习神经网络,以及机器学习中的马尔可夫链、隐马尔可夫链,甚至决策树、支持向量机SVM、AdaBoost、XGBoost、GBDT等等不过是贝叶斯网络的特殊情形。所以深入研究贝叶斯网络相当重要。贝叶斯网络的目的贝叶斯网络是一个有向无环图,其中的结点表示事物的状态,而结点a指向结点b的有向弧表示a对b的发生有影响。举个栗子,假设a表示抽烟与否(表示

2021-07-21 10:22:04 2864

原创 女神和吊丝系列:朴素贝叶斯方法朴素在哪?——贝叶斯理论(2)

在上篇博客《贝叶斯理论(1)》(https://fanglin.blog.youkuaiyun.com/article/details/118889244)中我们讲解了贝叶斯公式的本质就是经验学习,也就是说,通过新发现的证据、现象、表现调整我们对事物的认识。这篇博客讲朴素贝叶斯方法。贝叶斯公式是讲如果有新证据新现象发生,我们该怎么把事物的先验概率调整为后验概率,如果有两个新证据发生我们又该怎么办呢?朴素贝叶斯方法讲的就是如何处理这种情况。假设表示女神喜欢吊丝的先验概率,女神不喜欢吊丝的先验概率,表示女神对你笑.

2021-07-20 10:38:17 439

原创 女神和吊丝:从贝叶斯公式看经验学习——贝叶斯理论(1)

贝叶斯公式是:怎样深刻理解这个公式而不是死记硬背呢?回答这个问题首先要弄明白贝叶斯公式到底要达到什么目的。贝叶斯公式要达到的目的是实现经验学习,也就是说,根据现有的经验调整人们对不同事物发生概率的预期。举个栗子:女神到底喜不喜欢你呢?根据贝叶斯理论,先要搞清楚女神喜欢一个吊丝的先验概率,即上面公式中的,这里假设是女神喜欢屌丝的概率,是她不喜欢吊丝的概率。什么是先验概率,就是在没有任何表现或者证据情况下的事物的概率。拿上面的例子来说就是统计全社会所有女神,看看她们中间喜欢吊丝的有多少从而计

2021-07-19 11:08:51 449

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除