精华内容
下载资源
问答
  • 算法学习笔记之阶低通滤波算法

    万次阅读 多人点赞 2016-09-27 11:29:13
    1. 一阶滤波算法的原理 一阶滤波,又叫一阶惯性滤波,或一阶低通滤波。是使用软件编程实现普通硬件RC低通滤波器的功能。 一阶低通滤波的算法公式为: Y(n)=αX(n) (1-α)Y(n-1) 式中:α=滤波系数;X(n)=本次采样...

     

     1. 一阶滤波算法的原理 

    一阶滤波,又叫一阶惯性滤波,或一阶低通滤波。是使用软件编程实现普通硬件RC低通滤波器的功能。 

    一阶低通滤波的算法公式为:

                             Y(n)=αX(n) + (1-α)Y(n-1) 

     

      式中:α=滤波系数;X(n)=本次采样值;Y(n-1)=上次滤波输出值;Y(n)=本次滤波输出值。 

     

    一阶低通滤波法采用本次采样值与上次滤波输出值进行加权,得到有效滤波值,使得输出对输入有反馈作用。

     

     2. 一阶滤波算法的程序(适用于单个采样) 

    #define a   0.01                // 滤波系数a(0-1)
    
    char value;                    //滤波后的值
    char new_value;                 //  新的采样值
    
    char filter() 
    { 
    char new_value; 
    new_value = get_ad(); 
    return 0.01*value + (1-0.01)*new_value;
     }
    </pre><pre>

     

     

     

     

     

    3. 一阶滤波算法的不足 


    1. 关于灵敏度和平稳度的矛盾 

         

          滤波系数越小,滤波结果越平稳,但是灵敏度越低;

          滤波系数越大,灵敏度越高,但是滤波结果越不稳定。


         一阶滤波无法完美地兼顾灵敏度和平稳度。有时,我们只能寻找一个平衡,在可接受的灵敏度范围内取得尽可能好的平稳度。而在一些场合,我们希望拥有这样一种接近理想状态的滤波算法。即:

         当数据快速变化时,滤波结果能及时跟进(灵敏度优先);

         当数据趋于稳定,在一个固定的点上下振荡时,滤波结果能趋于平稳(平稳度优先)。

     

    2. 关于小数舍弃带来的误差 


       一阶滤波算法有一个鲜为人知的问题:小数舍弃带来的误差。 比如: 本次采样值=25,上次滤波结果=24,滤波系数=10, 根据滤波算法:

          本次滤波结果=(25*10+24*(256-10))/256=24.0390625 
       但是,我们在单片机运算中,很少采用浮点数。因此运算后的小数部分要么舍弃,要么进行四舍五入运算。这样一来,本例中的结果24.0390625就变成了24。假如每次采样值都=25,那么滤波结果永远=24。也就是说滤波结果和实际数据一直存在无法消除的误差。
     

    展开全文
  • 一个机器学习算法工程师的基本素质~

    千次阅读 多人点赞 2017-01-19 14:17:01
    看到篇很通俗易懂诙谐幽默的博客,名真正的机器学习算法工程师所需要的技能

    本文出处:https://zhuanlan.zhihu.com/p/21276788,原作者:吳YH堅

    1. 前言

    本来这篇标题我想的是算法工程师的技能,但是我觉得要是加上机器学习在标题上,估计点的人会多一点,所以标题成这样了,呵呵,而且被搜索引擎收录的时候多了一个时下的热门词,估计曝光也会更多点。不过放心,文章没有偏题,我们来说正经的。

    今天就说说机器学习这个最近两年计算机领域最火的话题,这不是一篇机器学习的技术文章,只是告诉大家机器学习里面的坑实在是太多,而且很多还没入门或者刚刚入门的朋友们,其实在你们前面是个大坑,如果你励志要在这条路上走下去的话,请做好心理准备。

    2. 我们学习机器学习的目的

    实话实说,目前大部分人上各种班来学习机器学习,学习大数据,归根到底还是希望能找到一个好的工作,拿到更高的薪水,当然还有一部分原因是自己对这一方面比较感兴趣,希望更深入的了解这个领域。

    我个人觉得,第一个原因的因素更大。

    3. 我们在谈机器学习的时候在谈什么

    首先,我们看看一个机器学习的系统长成什么样子

    几乎所有的机器学习系统都是由上述系统图组成,不同的是监督型的系统训练数据可能需要人工干预而非监督型的系统不需要人工干预,简单来说就是给一批训练数据给这个机器学习模型进行学习,得到一个预测模型,然后用这个预测模型对新的未知数据进行预测。

    现在网络上机器学习方面的文章,博客到处都是,市面上各种各样的书籍也到处都是,而且目前在线教育最火的领域也是这个,各种各样的机器学习的在线教育的班,学费还挺贵。

    但是你发现没有,所有这些谈论的机器学习都是在谈论模型,什么《深入理解XXX模型》,《可能是最好的理解XXX的文章》,《机器学习并不难,XXXX模型详解》之类的文章和书遍地开花。各种介绍逻辑回归,深度学习,神经网络,SVM支持向量机,BP神经网络,卷积神经网络.....等等等等

    所以,我们在谈论机器学习的时候,实际上是在谈论机器学习的模型,也就是各种机器学习算法。而且大家都认为只要学会了模型和算法的理论,那就是机器学习的专家了。我相信大多数人都是这么认为的。

    4. 小明成了机器学习"专家"

    有个小朋友,是搞计算机的,叫小明,看了alphago李世石的视频,虽然他完全不懂围棋,但是他还是被震撼到了,决心要好好学习一下这个传说中的机器学习。于是到处在网上找教程,找博客文章,找书籍,好好的学了半年,终于觉得自己入门了。每个机器学习的模型算法都能说出个所以然来了。

    不知道大家有多少在这个阶段?

    但小明还想更进一步,于是开始研究各种模型的代码和工具了,hadoop和spark那是标配了,又是各种找文章,各种找书,各种在线学习班,还好这些东西一大把一大把的,特别现在的在线学习班,要是没有大数据处理班,没有hadoop班,那就别开了。

    一路下来,大半年又过去了,终于小明觉得自己学会了,理论也有了,大数据处理工具也会了,简直无敌了!

    又有多少人在这个阶段?并以为自己已经会机器学习了。到这个阶段,如果你学得好,那么你已经可以去开个学习班教别人机器学习了。但如果你以为这样就可以去找个公司做算法工程师了,那么告诉你,图样图森破,乃义五!

    小明因为有较强的理论知识,能推导所有公式,又会hadoop,spark,再加上自己的表达能力强,很容易的秒了几个面试官进了一个大公司,是在一个电商做搜索的算法工程师,月薪很高,终于可以一展拳脚了,老板交给他一个任务,用你那牛逼的知识把搜索的点击率给我提升一个百分点吧。

    如果你是小明,如果你刚从某个机器学习的学习班下来,你怎么弄?你是不是傻了?

    5. 机器学习不仅仅是模型

    产生这个问题的原因就是所有人都以为机器学习的模型就是机器学习本身,以为对那些个算法理解了就是机器学习的大牛了,但实际上完全不是这样的。

    模型是谁在玩呢?模型是科学家发明出来的, 是各个大公司的各个科学家研究员发明出来的,这个发明出来是会出论文的,是他们用来虐我们的智商的,一般情况下,你发明不了模型吧(如果可以,可以不要往下看了,你可以走学术那条路)?你修改不了模型吧?

    所以说,学会了模型,只是刚刚刚刚入门,甚至还算不上入门吧

    那各个公司的那么多算法工程师在干嘛呢?我们以一个搜索排序的算法工程师为例,他们在做甚呢?他们在

    观察数据--->找特征--->设计算法--->算法验证--->洗数据--->工程化--->上线看效果--->goto 观察数据

    而且一个成熟的系统中,一般模型已经大概确定了,如果效果不是特别不好不会换模型,比如一个公司的搜索排序系统用了机器学习的逻辑回归模型,你要改成别的模型一般不太可能,那么只能做一些特征上的补充。

    好,我们通过这个流程来看看一个机器学习的算法工程师到底还要什么能力。

    5.1 观察数据

    小明每天就在工位上看数据,查数据,看表格,画曲线,发现像销量收藏点击等等这种能想到的特征早就被用了,就这么耗了三个月,没有任何进展,人都崩溃了,来了这么久,机器学习代码毛都没看到呢。

    第四个月,他发现一点问题,他发现有些商品,评论什么的都挺好,感觉产品质量也不错,但就是销量上不去,所以老排后面,于是,他把这些评论都是五星,但是销量比较差的商品滤出来了,想看看他们有什么共性。

    观察数据阶段,你说要什么能力?呵呵,只能告诉你,需要数据敏感性,其实也就是告诉你需要全面的能力,需要经验,需要产品经理的能力

    除了这些,你还需要能随手编脚本代码的能力,遇到有些数据需要初步处理,可能需要随手编代码处理,而且编的要快,因为这些代码可能就用一两次就不用了,所以需要比较强大的脚本语言能力,那么python至少要熟悉吧,shell要会吧。

    5.2 找特征

    数据观察下来发现了问题,现在要找特征了,要找特征,也就是找什么因素导致销量上不去的,首先,需要想象力,然后去验证你的想象力。

    小明的想象力爆棚,即便这样,也搞了一个月才发现这些个商品有个共同特征,那就是图片都比较烂,让人一看就不想点。卧槽,要是能把图片质量加入到排序因素里面的话,是不是有奇效呢?图片质量作为特征,这之前可没人做过,终于找到一个特征了。

    所以在这一阶段,毕竟大家的想象力都是有限的,更多的是经验值,才能找到符合当前场景的特征。

    5.3 设计算法

    特征是找到了,但怎么把这个特征加到排序模型里面去呢?图片好不好,有多好,这些机器怎么理解呢?如果不能把图片质量变成一个数学上的向量,那永远都无法加入到排序模型里面去。

    这一阶段是真正考验算法工程师的地方了,那就是将特征向量化,小明观察到越好看的图像往往颜色变化更多,而质量差的图片往往颜色没什么变化,于是他想到一种办法,先把图像数据进行傅里叶变换,变成频域的数据,根据傅里叶变换的性质,高频部分的幅度高表示图像的颜色变化很明显,如果低频部分高,表示颜色变化不明显,这和观察到的图像信息基本能匹配上,这样一副图像的好坏,就可以用傅里叶变换后高频部分的幅度表示了,然后在做一些归一化的变化,就把图像向量化了,向量化以后就可以加入到排序模型去了。

    这一步,你可能会用到你学习的机器学习模型,但肯定只占了一小部分,大部分情况需要你根据当前场景自己建立一个数学模型,而不是机器学习模型,你说这一阶段需要什么技能?虽然我这里举的例子比较极端,但是数学抽象能力数学建模能力数学工具的熟练使用是必不可少的,并且同样需要较强的编程能力,这已不是上一步的脚本能力,是实打实的计算机算法编程能力了。

    5.4 算法验证

    算法是设计好了,还要设计一个算法的离线验证方法来证明给你的老大看说我的算法是有效果的,不然哪那么多机会让你到线上去试啊,这一步也是各种综合能力的组合,关键是在这一步上,你要用一种通俗的语言从理论上说服你的老大,这是一种什么能力?强大的语言表达能力。

    除了这个你还需要设计出一个上线以后的AB测试方案,能够很好的测试出你的算法是否真的有效。

    5.5 洗数据

    特征找到了,算法也设计得差不多能体现特征了,体力活来了,那就是洗数据,这是算法工程师的必修课,数据不是你想要什么样子他就长得什么样子的,所以要把数据变成你想要的样子,然后去掉无效的数据可是个体力活。

    像上面这个例子,首先可能大家的图片大小都不一样,要变成一个尺寸才好进行变换,有些商品有多个图片,可能需要找出质量最好的再处理等等等等。

    这一阶段首先也是要脚本语言处理能力,而且还需要掌握一些数据处理工具的使用,关键还要有足够的耐性和信心,当然,必不可少的是优秀的编程能力。

    5.6 工程化

    好了,前面的坑你全跨过来了,到了这一步了,呵呵,算法设计完了,数据也准备好了,估计半年过去了,那赶快放到线上去吧,你以为拿着一堆脚本就能上线了啊,得考虑工程化了,如果把你的算法嵌入到原有系统中,如果保证你的算法的效率,别一跑跑一天,代码的健壮性也要考虑啊,如果是在线算法,还得考虑性能,别把内存干没了。

    这一步,你才真正的用上了你上面学的机器学习的hadoop,spark工具,看了上面说的,要完成工程化这一步,得有什么能力不用我说了吧,这是一个标准的软件开发工程师的必要技能,还是高级开发工程师哦。

    5.7 上线看效果

    所有的都做完了,前前后后10个月了,终于可以上线了,好了,真正的考验来了,看看上线的效果呗,产品经理说,做个AB测试吧,结果呵呵了,点击率降低了,小明啊!这10个月忙活下来点击率还下降了???老板还不把你骂死,所以,你必须有强大的抗打击能力

    呵呵,赶快下线吧,从头看看哪里出了问题,又花了一个月修改了算法,重新上线,恩,这次不错,点击率提高了0.2个百分点,继续努力吧,看看还有没有什么可以挖掘的,于是,你就goto到了看数据的那一步。

    别看这0.2,大的数据集合下,提高0.2已经是非常不错的提高了,所以花这么多钱,养算法工程师,要是一年能出几次0.2,那就是真值了。

    6. 让我们总结一下

    上面这么多的过程,靠一个人全部完成确实有点困难,我说的有点夸张,中间有些步骤是有人配合的,观察数据的时候有产品经理配合你,洗数据的时候有数据工程师配合你,工程化的时候有系统工程师配合你,但是作为机器学习的算法工程师,整个过程你都得能hold得住啊,所以即便是你一个人应该也要能完成整个流程才行。

    这只是一个标准的算法工程师应该具备的能力,当然我这里是以搜索算法举例的,其他的算法工程师也差不太多,总跑不过上面几个过程,当然,你要是牛人,能根据场景修改这个机器学习的模型,甚至自己能想个模型,那就更厉害了。

    好,我们把上面的重点标记的部分取出来汇总一下,让我们看看一个算法工程师需要具备哪些技能

    • 数据敏感性,观察力

    • 数学抽象能力,数学建模能力和数学工具的熟练使用的能力

    • 能随手编脚本代码的能力,强大的计算机算法编程能力,高级开发工程师的素质

    • 想象力,耐性和信心,较强的语言表达能力,抗打击能力

    然后,还有很关键的一点,你需要很聪明,当然,你如果能做到以上那么几点,基本上也会很聪明了,如果真能做到这样,反而那些机器学习的模型,理论和工具就显得不那么重要了,因为那些也只是知识和工具,随时都可以学嘛。

    你说,这些是靠看几篇博客,看几本书,上几次课就能具备的么??

    当然,我们这里讨论的是一般情况,如果你一心就是做研究的话,那么需要把上述技能熟练度再提高一个量级。

    最后,正在学习机器学习,励志做算法工程师的你,准备好踏这些坑了么??

    展开全文
  • 尤其是在就业一年比一年难的情况下,经历过好多次心态崩裂,也问过很多人,来总结一下如果想成为一个【深度学习 CV 算法工程师】需要什么学习能力和知识储备。 这个文章应该会是一个【记录】的文章,看看自己这一路...

    声明:

    1)该文章整理自网上的大牛和机器学习专家无私奉献的资料,具体引用的资料请看参考文献。
    2)本文仅供学术交流,非商用。所以每一部分具体的参考资料并没有详细对应。如果某部分不小心侵犯了大家的利益,还望海涵,并联系博主删除。
    3)博主才疏学浅,文中如有不当之处,请各位指出,共同进步,谢谢。
    4)此属于第一版本,若有错误,还需继续修正与增删。还望大家多多指点。大家都共享一点点,一起为祖国科研的推进添砖加瓦。

    〇、写在前面

    在这里插入图片描述
    讲道理,其实这个博客我是怀着一个很严肃的心情准备写的,但是吧,一谈到【找工作】这个问题,我就很焦虑。。。。。。看到这个省略号了嘛?这就是我的心情 😐,尤其是在就业一年比一年难的情况下。为什么这么说?

    事实上19届秋招算法岗就有些【供过于求】了,头条甚至发了 算法劝退贴。而这很大程度上就是由于前几年算法就业形势太好了,导致一大批人转算法,这导致的大泡沫其实还没有消化掉,所以其实不是现在算法突然不好找工作了,而是之前太容易了。其实你说公司真的不缺算法工程师嘛?当然不是,公司也是有算法工程师的缺口的,那为什么出现这种情况?除了要劝退一部分盲目入行的同学;听到、遇到的好几个HR都说,收到几百份简历,但是没什么匹配的。所以说做算法的人多是真的,可是需要做算法的人也是真的,而主要的矛盾点在于 供需不匹配

    所以在经历过好多次心态崩裂,也问过很多前辈和大佬之后,参考了很多大佬的文章之后,我决定来总结一下如果想成为一个【深度学习算法工程师】需要什么学习能力和知识储备。这个文章应该会是一个【记录】性质的文章,期望看看自己这一路走来 学了什么准备学什么需要学什么,希望和各位共勉。

    一、编程能力

    这真是个老生常谈的问题,为什么这么说呢,自然是因为这个【编程能力】我听过不下几百遍,听的脑瓜子都疼,可是没法子,这就是 必备技能,必备到什么程度?

    这么说吧,假如你想写作文,如果你不会写字,组词,造句,我想你应该完全没法完成这个创作过程。很形象吧,但是也确实如此,仔细想一想,招你进去是要干活的,公司不会招聘一个只会 MATLAB 或者 python 都用不熟的人来做项目开发吧,做纯算法研究都不行。

    • MATLAB 大家都懂的,做实验室研究确实很棒,高效方便的矩阵和数组运算,画图方面也相当不错,但是工业应用还没听过谁说是用 MATLAB 实现的呢。
    • python 你可能想问为什么,可以这么说,如果连 python 这样比较简单的语言还用不熟,那真是无话可说。

    那么 具体地说,编程能力需要哪些基本要求呢?

    (1)熟练使用 linux

    在这里插入图片描述
    新手肯定都是用 Windows 起手的了,像我之前就是这样,但是在学习过程中发现在 Windows 上搞不定了,一般也会先忍几次,然后掉头就去学 linux 了,一定是这样的过程。哪些在 Windows 上真的搞不定呢?比如:最新论文中提出的视觉开源算法等等。

    但是在条件上可能很多人都觉得不是太合适,比如实验室条件,电脑条件等等,不过对我们而言,linux 并不需要了解太深。装个 ubuntu 系统,常用的文件操作、程序编译等知道就OK了。剩下的完全是在使用的过程中现用现学,手边常备一本书 《鸟哥的linux私房菜》,神书,你可以百度或者Google一下自然就知道这个书的强大了。在或者现在的网络比较强大了,资源也是很多,实验楼 也是一个不错的选择,帮你搭配好的环境,直接使用就OK了。如果还是想自己搞一下,虚拟机也是一个不错的选择,不会影响你电脑本来的环境配置,但是还满足了要求。

    个人计划

    • 《鸟哥的linux私房菜》
    • 实验楼

    (2)熟练使用 python

    在这里插入图片描述
    网络如此发达的今天,如果你说你找不到资源我是不相信的,但是如果你说你眼花缭乱了,我是毫不质疑的。因为我当时就就是这样的,基础部分看廖雪峰的 python教程 就可以了,我个人有看一些,但是真正入门的是一本书——《Python编程:从入门到实践》,极其的基础,但是对小白来说非常友好。

    有的同学会问是学 python2 还是 python3?这么说吧,python 核心团队计划2020年停止支持 python2,也就是说 python2 马上就要说再见了,肯定还是学 python3,遇到之前的 python2 的代码再查找区别即可。python 学起来其实很简单,看别人代码的过程就是学习的过程。对于不熟悉的用法多搜下官方文档,如 pythonnumpypandasmatplotscikit-learn等等。

    python 的开发环境值得说一下,因为有太多选择,这里比较建议使用 pycharm 和 jupyter notebook 吧,具体可以参考这个博客——Windows10 下 Anaconda和 PyCharm 的详细的安装教程(图文并茂)

    个人计划

    • 《Python编程:从入门到实践》
    • 《疯狂Python讲义》

    (3)流畅使用 C++

    在这里插入图片描述
    至于 C++,比较普遍的都是 《C++ primer》《C++ primer plus》 这样的大块头书,如果是入门的话应该还可以,倒是不如 《王道程序员求职宝典》 这类书实用。大块头书优点在于全面,同时也往往导致了重点不突出。如果想看视频课程的话,推荐中国慕课上北大的《程序设计与算法》,第1门课程是 C 语言程序设计,第2门课程是算法基础,第3门课程是 C++ 程序设计。看视频课程一般比较慢,如果没什么基础或者特别想把基础学好的话,强烈推荐。

    个人计划

    • 《C++ primer》
    • 《C++ primer plus》
    • 程序设计与算法课程(一)
    • 程序设计与算法课程(三)

    (4)良好的算法基础

    在这里插入图片描述
    其实没做过检测或者分割或者其他的,是很正常的,快速跟进就是了,这是公司开发的常态。但是如果一些网络结构基础,图像的基础概念,卷积神经网络的基础——大话卷积神经网络CNN(干货满满),等等,这样很可能会犯很多低级错误,可能会出现很多问题。

    这就要求开发能力必须过关,因为算法效率在实际生产中还是有要求的。工业界用的算法是滞后于学术界好几年的,不要对公司所做的算法有太多的幻想,现实数据比你想的质量差太多,现实用的算法也没有那么高端,大部分时间都不是用在建模。

    个人计划

    • LeetCode
    • 牛客网
    • 《剑指offer》

    python:

    • 《算法图解》
    • 《用Python解决数据结构与算法问题》
    • 《数据结构与算法 Python语言描述》

    C++:

    • 《啊哈!算法》
    • 程序设计与算法课程(二)
    • 《算法导论中文第三版》(这是本神书。。。)

    (5)良好的编程习惯

    在这里插入图片描述
    这里说的习惯有:多使用类,多利用函数封装,写好项目的目录结构,良好的变量或者函数命名,善用程序的注释功能,Python 编程语言需要遵循 PEP8 规范(杂谈——Python代码写得丑怎么办?autopep8来帮你)等等。这可以帮助你更好的和同事或者同行沟通,而且看着也舒服,就算好久不看程序了,依然可以做到很好的回溯记忆。

    二、深度学习理论

    在这里插入图片描述
    基于深度学习的计算机视觉是计算机视觉的两大方向之一,另一个是 SLAM,机器学习包括深度学习里的大部分算法本质上都是用来做 分类 的。具体到计算机视觉领域一般就是 物体分类(Object Classification)目标检测(Object Detection)语义分割(Image Semantic Segmentation) 等,当然也有一些很酷又好玩的东西比如 edges2catsdeepart 等等。

    我主要做一些【图像重建】或者【超分辨率】相关的东西。其实一般是看一看论文,复现复现网络结构,或者直接跑一跑别人的代码,做一做网络结构修改,调一调超参数。前期的图像数据集制作,还有预处理才是主要的工作。深度学习为什么这么强?它比传统的图像处理方法好吗?它主要解决了什么样的问题呢?

    个人比较认同是以下三点:学习特征的能力很强,通用性强,开发优化维护成本低。存在的问题可能就是数据量,对 label 的精准性要求比较大。之前看过的一个文章写得不错,参见 为什么深度学习几乎成了计算机视觉研究的标配?

    关于这一部分理论的学习,漫天飞的各种资源。这里推荐一些:

    个人计划

    • 《一天搞懂深度学习》
    • CS231N课程
    • Deep Learning AI课程
    • 《DeepLearning深度学习花书》
    • 《Tensorflow+实战Google深度学习框架》
    • 《图解神经网络与深度学习》
    • 《PyTorch深度学习实战》
    • 《Python 深度学习(Keras)》
    • 《深度学习之Pytorch》
    • 《深度学习框架PyTorch》
    • 《PaddlePaddle与深度学习应用实战》
    • 《动⼿学深度学习》
    • 《深度学习之PyTorch实战计算机视觉》
    • 经典深度学习论文

    三、g++, CMake和Makefile

    在这里插入图片描述
    python 是脚本语言,而当前大量的 AI 算法都部署在移动端嵌入式平台,需要使用 c / c++ / java 语言,g++,CMake 和 Makefile 正是 Linux 下编译 C系代码 的工具,也是必备的基础。实际上一些python,matlab开源项目也需要预编译,更多的等到了工作岗位自然懂。

    个人计划

    • g++
    • CMake
    • Makefile

    四、shell,vim 和 git

    在这里插入图片描述
    Linux 下一个熟练的工程师,会比 Windows 下工作效率高很多,提高写代码效率可以从终端多任务管理,熟练使用 shell 命令,熟练使用 vim 等开发环境,熟练使用 git 命令等地方入手。

    • shell 命令是 Linux 的操作基础,也是学习使用 Linux 的开始,而慢慢熟悉高级的 shell 命令在将来的工作中会带来很大的效率提升。
    • vim 是 Linux 下最常用的编辑器,从小白到高手都可以使用,而它的列编辑,查找替换,自动补全等功能都是效率的保证,或许从visual studio等环境切换过来的同学刚开始会有些许不适应,但是时间久了就会越来越明白 vim 的好。
    • git 是程序员必备的素养,慢慢学会维护几个自己的代码库,等到将来出问题的时候就明白了。

    个人计划

    • shell
    • vim
    • git

    五、python 爬虫

    在这里插入图片描述
    深度学习项目开发中最重要的就是 数据!!!或许是一句戏言,但是有一句话是这么说的,深度学习在目前阶段可以认为是一个数据的游戏,你的数据更好,标记的更完美,你的运行结果就更棒。尤其是实际的项目经常没有足够多的数据,这个时候就需要自己去想办法获取了。除了公开的数据集之外,其他的数据怎么获得呢?互联网是一个什么资源都有的大宝库,学会使用好爬虫,你将可能成为时代里最有资源的人,我想叫你金矿工,而且这也很可能是项目成功的开始。

    个人计划

    • 网络爬虫
    • 《Python项目案例开发从入门到实战——爬虫、游戏和机器学习》

    六、数据可视化

    在这里插入图片描述
    处理数据的一个常用的手段就是数据可视化!在深度学习项目中,常需要的数据可视化操作包括原始图片数据的可视化,损失和精度的可视化等。除了对数据可视化,还需要对模型进行可视化,方便调试和感知。

    这个方面我的建议是多打一些比赛,多看一看别人的代码和博客,这样就会很容易学会的。

    个人计划

    • Kaggle
    • 天池

    七、数学基础

    在这里插入图片描述

    • 微积分:其实个人感觉涉及的微积分知识相对简单,积分很少,微分也不是特别复杂,花一天时间学一学就行。

    • 概率论与统计:这个比较高深,是应用在机器学习领域里最重要的数序分支。应用比如:条件概率、相关系数、最大似然、大数定律、马尔可夫链等等,还是得好好搞一下概率。

    • 线性代数:数字图像本身就是以矩阵的形式呈现的,多个向量组成的样本也是矩阵这种形式非常常见,大多机器学习算法里每个样本都是以向量的形式存在的,多个矩阵叠加则是以张量(tensor)的形式存在 Google 深度学习库 TensorFlow 的字面意思之一。

    • 凸优化:这个需要单独拎出来说一下。因为太多问题(尤其机器学习领域)都是优化问题(求最优),凸优化是里面最简单的形式,所以大家都在想办法怎么把一般的优化问题转化为凸优化问题。至于单纯的凸优化理论,好像已经比较成熟了。在机器学习里,经常会看到什么求对偶问题、KKT条件等,潜下心花两天学一学。

    数学知识真的没必要系统学习,效率低又耗时,毕竟大家都有本科或者研究生的基础了,这就足够了。用的最多的就是矩阵论!!!或者用到的时候学,学完之后总结一下。再就是活学活用网上的搜索资源,比如 CSDN、知乎等等。

    个人计划

    八、公众号

    时代变了,一百年前的人类绝对想像不出自己有了困惑不是去翻书或请教他人而是告诉身旁的一台机器。如今,小学生做道算术题或小女生来个大姨妈都要问问电脑:这是怎么回事。但这些与学视觉又有什么关系呢?——答:没有。好像跑偏的有点多了,再扯远一点吧。跨越时间维度来思考一些新事物的发生及其与旧事物的联系,也许会给你一种想象的自由。比如电报、电话、视频聊天和全息通话用 HoloLens 通话,再比如马车、汽车、火车、飞机和火箭太空旅行,蒸汽机、电、互联网和AI。所以活用资源,多看肯定没错,不过要有所选择的看,不能啥都看,,,人的精力还是优先的。

    先说明公众号不是打广告,推荐几个自己看的而已(排名没有先后顺序)。

    • 机器学习实验室
    • 磐创AI
    • kaggle竞赛宝典
    • 有三AI
    • 我爱计算机视觉
    • Datawhale
    • 计算机视觉life
    • CVer
    • 小小挖掘机

    九、彩蛋

    看一下目录,你会发现它向一把小刀一样,是不是?希望你我能剑锋所指,所向披靡!!!

    推荐一个自己写的博客——大话卷积神经网络CNN(干货满满),种树从现在开始。

    在这里插入图片描述

    如果有幸帮到你,请帮我点个【赞】,给个【关注】!如果能顺带【评论】给个鼓励,我将不胜感激。

    如果想要更多的资源,欢迎关注 @我是管小亮,文字强迫症MAX~

    回复【福利】即可获取我为你准备的大礼,包括C++,编程四大件,NLP,深度学习等等的资料。

    想看更多文(段)章(子),欢迎关注微信公众号「程序员管小亮」~

    在这里插入图片描述
    学习AI可以看一下这个课程!
    在这里插入图片描述

    参考文章

    展开全文
  • 机器学习之KNN最邻近分类算法

    万次阅读 多人点赞 2018-09-15 13:13:33
    KNN(K-Nearest Neighbor)最邻近分类算法是数据挖掘分类(classification)技术中最简单的算法,其指导思想是”近朱者赤,近墨者黑“,即由你的邻居来推断出你的类别。 KNN最邻近分类算法的实现原理:为了...

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程

    KNN算法简介

    KNN(K-Nearest Neighbor)最邻近分类算法是数据挖掘分类(classification)技术中最简单的算法之一,其指导思想是”近朱者赤,近墨者黑“,即由你的邻居来推断出你的类别。

    KNN最邻近分类算法的实现原理:为了判断未知样本的类别,以所有已知类别的样本作为参照,计算未知样本与所有已知样本的距离,从中选取与未知样本距离最近的K个已知样本,根据少数服从多数的投票法则(majority-voting),将未知样本与K个最邻近样本中所属类别占比较多的归为一类。

              以上就是KNN算法在分类任务中的基本原理,实际上K这个字母的含义就是要选取的最邻近样本实例的个数,在 scikit-learn 中 KNN算法的 K 值是通过 n_neighbors 参数来调节的,默认值是 5。

              如下图所示,如何判断绿色圆应该属于哪一类,是属于红色三角形还是属于蓝色四方形?如果K=3,由于红色三角形所占比例为2/3,绿色圆将被判定为属于红色三角形那个类,如果K=5,由于蓝色四方形比例为3/5,因此绿色圆将被判定为属于蓝色四方形类。

    由于KNN最邻近分类算法在分类决策时只依据最邻近的一个或者几个样本的类别来决定待分类样本所属的类别,而不是靠判别类域的方法来确定所属类别的,因此对于类域的交叉或重叠较多的待分样本集来说,KNN方法较其他方法更为适合。

               KNN算法的关键:

               (1) 样本的所有特征都要做可比较的量化

               若是样本特征中存在非数值的类型,必须采取手段将其量化为数值。例如样本特征中包含颜色,可通过将颜色转换为灰度值来实现距离计算。

               (2) 样本特征要做归一化处理

               样本有多个参数,每一个参数都有自己的定义域和取值范围,他们对距离计算的影响不一样,如取值较大的影响力会盖过取值较小的参数。所以样本参数必须做一些 scale 处理,最简单的方式就是所有特征的数值都采取归一化处置。

               (3) 需要一个距离函数以计算两个样本之间的距离

               通常使用的距离函数有:欧氏距离、余弦距离、汉明距离、曼哈顿距离等,一般选欧氏距离作为距离度量,但是这是只适用于连续变量。在文本分类这种非连续变量情况下,汉明距离可以用来作为度量。通常情况下,如果运用一些特殊的算法来计算度量的话,K近邻分类精度可显著提高,如运用大边缘最近邻法或者近邻成分分析法。

    以计算二维空间中的A(x1,y1)、B(x2,y2)两点之间的距离为例,欧氏距离和曼哈顿距离的计算方法如下图所示:

    (4) 确定K的值

               K值选的太大易引起欠拟合,太小容易过拟合,需交叉验证确定K值。

    KNN算法的优点:

               1.简单,易于理解,易于实现,无需估计参数,无需训练;

               2. 适合对稀有事件进行分类;

               3.特别适合于多分类问题(multi-modal,对象具有多个类别标签), kNN比SVM的表现要好。

    KNN算法的缺点:

               KNN算法在分类时有个主要的不足是,当样本不平衡时,如一个类的样本容量很大,而其他类样本容量很小时,有可能导致当输入一个新样本时,该样本的K个邻居中大容量类的样本占多数,如下图所示。该算法只计算最近的邻居样本,某一类的样本数量很大,那么或者这类样本并不接近目标样本,或者这类样本很靠近目标样本。无论怎样,数量并不能影响运行结果。可以采用权值的方法(和该样本距离小的邻居权值大)来改进。

    该方法的另一个不足之处是计算量较大,因为对每一个待分类的文本都要计算它到全体已知样本的距离,才能求得它的K个最近邻点。

    可理解性差,无法给出像决策树那样的规则。

    KNN算法实现

    要自己动手实现KNN算法其实不难,主要有以下三个步骤:

               算距离:给定待分类样本,计算它与已分类样本中的每个样本的距离;

               找邻居:圈定与待分类样本距离最近的K个已分类样本,作为待分类样本的近邻;

               做分类:根据这K个近邻中的大部分样本所属的类别来决定待分类样本该属于哪个分类;

    以下是使用Python实现KNN算法的简单示例:

    import math
    import csv
    import operator
    import random
    import numpy as np
    from sklearn.datasets import make_blobs
    
    #Python version 3.6.5
    
    # 生成样本数据集 samples(样本数量) features(特征向量的维度) centers(类别个数)
    def createDataSet(samples=100, features=2, centers=2):
        return make_blobs(n_samples=samples, n_features=features, centers=centers, cluster_std=1.0, random_state=8)
    
    # 加载鸢尾花卉数据集 filename(数据集文件存放路径)
    def loadIrisDataset(filename):
        with open(filename, 'rt') as csvfile:
            lines = csv.reader(csvfile)
            dataset = list(lines)
            for x in range(len(dataset)):
                for y in range(4):
                    dataset[x][y] = float(dataset[x][y])
            return dataset
        
    # 拆分数据集 dataset(要拆分的数据集) split(训练集所占比例) trainingSet(训练集) testSet(测试集)
    def splitDataSet(dataSet, split, trainingSet=[], testSet=[]):
        for x in range(len(dataSet)):
            if random.random() <= split:
                trainingSet.append(dataSet[x])
            else:
                testSet.append(dataSet[x])
    # 计算欧氏距离 
    def euclideanDistance(instance1, instance2, length):
        distance = 0
        for x in range(length):
            distance += pow((instance1[x] - instance2[x]), 2)
        return math.sqrt(distance)
    
    # 选取距离最近的K个实例
    def getNeighbors(trainingSet, testInstance, k):
        distances = []
        length = len(testInstance) - 1
        for x in range(len(trainingSet)):
            dist = euclideanDistance(testInstance, trainingSet[x], length)
            distances.append((trainingSet[x], dist))
        distances.sort(key=operator.itemgetter(1))
        
        neighbors = []
        for x in range(k):
            neighbors.append(distances[x][0])
        return neighbors
    
    #  获取距离最近的K个实例中占比例较大的分类
    def getResponse(neighbors):
        classVotes = {}
        for x in range(len(neighbors)):
            response = neighbors[x][-1]
            if response in classVotes:
                classVotes[response] += 1
            else:
                classVotes[response] = 1
        sortedVotes = sorted(classVotes.items(), key=operator.itemgetter(1), reverse=True)
        return sortedVotes[0][0]
    
    # 计算准确率
    def getAccuracy(testSet, predictions):
        correct = 0
        for x in range(len(testSet)):
            if testSet[x][-1] == predictions[x]:
                correct += 1
        return (correct / float(len(testSet))) * 100.0
    
    
    def main():
        # 使用自定义创建的数据集进行分类
        # x,y = createDataSet(features=2)
        # dataSet= np.c_[x,y]
        
        # 使用鸢尾花卉数据集进行分类
        dataSet = loadIrisDataset(r'C:\DevTolls\eclipse-pureh2b\python\DeepLearning\KNN\iris_dataset.txt')
            
        print(dataSet)
        trainingSet = []
        testSet = []
        splitDataSet(dataSet, 0.75, trainingSet, testSet)
        print('Train set:' + repr(len(trainingSet)))
        print('Test set:' + repr(len(testSet)))
        predictions = []
        k = 7
        for x in range(len(testSet)):
            neighbors = getNeighbors(trainingSet, testSet[x], k)
            result = getResponse(neighbors)
            predictions.append(result)
            print('>predicted=' + repr(result) + ',actual=' + repr(testSet[x][-1]))
        accuracy = getAccuracy(testSet, predictions)
        print('Accuracy: ' + repr(accuracy) + '%')
    main()
        
    

    尾花卉数据文件百度网盘下载链接:https://pan.baidu.com/s/10vI5p_QuM7esc-jkar2zdQ 密码:4und

    KNN算法应用

    使用KNN算法处理简单分类任务

    在scikit-learn中,内置了若干个玩具数据集(Toy Datasets),还有一些API让我们可以自己动手生成一些数据集。接下来我们将使用scikit-learn的make_blobs函数来生成一个样本数量为200,分类数量为2的数据集,并使用KNN算法来对其进行分类。

    # 导入画图工具
    import matplotlib.pyplot as plt
    # 导入数组工具
    import numpy as np
    # 导入数据集生成器
    from sklearn.datasets import make_blobs
    # 导入KNN 分类器
    from sklearn.neighbors import KNeighborsClassifier
    # 导入数据集拆分工具
    from sklearn.model_selection import train_test_split
    
    # 生成样本数为200,分类数为2的数据集
    data=make_blobs(n_samples=200, n_features=2,centers=2, cluster_std=1.0, random_state=8)
    X,Y=data
    
    # 将生成的数据集进行可视化
    # plt.scatter(X[:,0], X[:,1],s=80, c=Y,  cmap=plt.cm.spring, edgecolors='k')
    # plt.show()
    
    clf = KNeighborsClassifier()
    clf.fit(X,Y)
    
    # 绘制图形
    x_min,x_max=X[:,0].min()-1,X[:,0].max()+1
    y_min,y_max=X[:,1].min()-1,X[:,1].max()+1
    xx,yy=np.meshgrid(np.arange(x_min,x_max,.02),np.arange(y_min,y_max,.02))
    z=clf.predict(np.c_[xx.ravel(),yy.ravel()])
    
    z=z.reshape(xx.shape)
    plt.pcolormesh(xx,yy,z,cmap=plt.cm.Pastel1)
    plt.scatter(X[:,0], X[:,1],s=80, c=Y,  cmap=plt.cm.spring, edgecolors='k')
    plt.xlim(xx.min(),xx.max())
    plt.ylim(yy.min(),yy.max())
    plt.title("Classifier:KNN")
    
    # 把待分类的数据点用五星表示出来
    plt.scatter(6.75,4.82,marker='*',c='red',s=200)
    
    # 对待分类的数据点的分类进行判断
    res = clf.predict([[6.75,4.82]])
    plt.text(6.9,4.5,'Classification flag: '+str(res))
    
    plt.show()

     程序执行后得到结果如下图所示:

    使用KNN算法处理多元分类任务

    接下来,我们再使用scikit-learn的make_blobs函数来生成一个样本数量为500,分类数量为5的数据集,并使用KNN算法来对其进行分类。

    # 导入画图工具
    import matplotlib.pyplot as plt
    # 导入数组工具
    import numpy as np
    # 导入数据集生成器
    from sklearn.datasets import make_blobs
    # 导入KNN 分类器
    from sklearn.neighbors import KNeighborsClassifier
    # 导入数据集拆分工具
    from sklearn.model_selection import train_test_split
    
    # 生成样本数为500,分类数为5的数据集
    data=make_blobs(n_samples=500, n_features=2,centers=5, cluster_std=1.0, random_state=8)
    X,Y=data
    
    # 将生成的数据集进行可视化
    # plt.scatter(X[:,0], X[:,1],s=80, c=Y,  cmap=plt.cm.spring, edgecolors='k')
    # plt.show()
    
    clf = KNeighborsClassifier()
    clf.fit(X,Y)
    
    # 绘制图形
    x_min,x_max=X[:,0].min()-1,X[:,0].max()+1
    y_min,y_max=X[:,1].min()-1,X[:,1].max()+1
    xx,yy=np.meshgrid(np.arange(x_min,x_max,.02),np.arange(y_min,y_max,.02))
    z=clf.predict(np.c_[xx.ravel(),yy.ravel()])
    
    z=z.reshape(xx.shape)
    plt.pcolormesh(xx,yy,z,cmap=plt.cm.Pastel1)
    plt.scatter(X[:,0], X[:,1],s=80, c=Y,  cmap=plt.cm.spring, edgecolors='k')
    plt.xlim(xx.min(),xx.max())
    plt.ylim(yy.min(),yy.max())
    plt.title("Classifier:KNN")
    
    # 把待分类的数据点用五星表示出来
    plt.scatter(0,5,marker='*',c='red',s=200)
    
    # 对待分类的数据点的分类进行判断
    res = clf.predict([[0,5]])
    plt.text(0.2,4.6,'Classification flag: '+str(res))
    plt.text(3.75,-13,'Model accuracy: {:.2f}'.format(clf.score(X, Y)))
    
    plt.show()

     程序执行后得到结果如下图所示:

    使用KNN算法进行回归分析

    这里我们使用scikit-learn的make_regression生成数据集来进行实验,演示KNN算法在回归分析中的表现。

    # 导入画图工具
    import matplotlib.pyplot as plt
    # 导入数组工具
    import numpy as np
    
    # 导入用于回归分析的KNN模型
    from sklearn.neighbors import KNeighborsRegressor
    # 导入数据集拆分工具
    from sklearn.model_selection import train_test_split
    # 导入数据集生成器
    from sklearn.datasets.samples_generator import make_regression
    from docutils.utils.math.math2html import LineWriter
    
    # 生成样本数为200,分类数为2的数据集
    X,Y=make_regression(n_samples=100,n_features=1,n_informative=1,noise=50,random_state=8)
    
    # 将生成的数据集进行可视化
    # plt.scatter(X,Y,s=80, c='orange',  cmap=plt.cm.spring, edgecolors='k')
    # plt.show()
    reg = KNeighborsRegressor(n_neighbors=5)
    
    reg.fit(X,Y)
    
    # 将预测结果用图像进行可视化
    z = np.linspace(-3,3,200).reshape(-1,1)
    plt.scatter(X,Y,c='orange',edgecolor='k')
    plt.plot(z,reg.predict(z),c='k',Linewidth=3)
    #
    plt.title("KNN Regressor")
    
    plt.show()

      程序执行后得到结果如下图所示:

    KNN算法项目实战----酒的分类

    from sklearn.datasets.base import load_wine
    from sklearn.model_selection import train_test_split
    from sklearn.neighbors import KNeighborsClassifier
    import numpy as np
    
    # 从 sklearn的datasets模块载入数据集加载酒的数据集
    wineDataSet=load_wine()
    print(wineDataSet)
    print("红酒数据集中的键:\n{}".format(wineDataSet.keys()))
    print("数据概况:\n{}".format(wineDataSet['data'].shape))
    print(wineDataSet['DESCR'])
    
    # 将数据集拆分为训练数据集和测试数据集
    X_train,X_test,y_train,y_test=train_test_split(wineDataSet['data'],wineDataSet['target'],random_state=0)
    print("X_train shape:{}".format(X_train.shape))
    print("X_test shape:{}".format(X_test.shape))
    print("y_train shape:{}".format(y_train.shape))
    print("y_test shape:{}".format(y_test.shape))
    
    knn = KNeighborsClassifier(n_neighbors=1)
    knn.fit(X_train,y_train)
    print(knn)
    
    # 评估模型的准确率
    print('测试数据集得分:{:.2f}'.format(knn.score(X_test,y_test)))
    
    # 使用建好的模型对新酒进行分类预测
    X_new = np.array([[13.2,2.77,2.51,18.5,96.6,1.04,2.55,0.57,1.47,6.2,1.05,3.33,820]])
    prediction = knn.predict(X_new)
    print("预测新酒的分类为:{}".format(wineDataSet['target_names'][prediction]))

     执行程序后打印如下结果:

    X_train shape:(133, 13)
    X_test shape:(45, 13)
    y_train shape:(133,)
    y_test shape:(45,)
    KNeighborsClassifier(algorithm='auto', leaf_size=30, metric='minkowski',
               metric_params=None, n_jobs=1, n_neighbors=1, p=2,
               weights='uniform')
    测试数据集得分:0.76
    预测新酒的分类为:['class_2']

    参考书籍:《深入浅出 Python 机器学习》 作者:段小手

    展开全文
  • 深度学习之BP算法

    万次阅读 多人点赞 2018-05-14 21:43:19
    作为深度学习领域的破冰之作,BP神经网络重新燃起了人们对... 神经网络主要是由三部分组成的,分别是:1) 网络架构 2) 激活函数 3) 找出最优权重值的参数学习算法.  BP算法就是目前使用较为广泛的种参数学习算...
  • 《算法学习》 :为什么要学习算法?时间复杂度

    千次阅读 多人点赞 2020-01-05 15:36:20
    为什么要学习算法和结构? 面试必问,面试官一上来,就让你写一个冒泡排序 ,你一脸懵逼,心想啥是冒泡排序,这就尴尬了,只能跟这家公司说good bye了,继续开始你的面试之旅。 作为一个开发人员,你想在这条...
  • 机器学习算法——集成算法(

    千次阅读 2018-08-27 19:26:52
    集成算法(Emseble Learning)是构建多个学习器,然后通过一定策略结合把它们来完成学习任务的,常常可以获得比单一学习显著优越的学习器。周志华的书上说,“个体学习器的"准确性"和"多样性"...
  • 机器学习十大算法

    万次阅读 多人点赞 2018-08-18 09:26:05
    机器学习十大算法 http://www.52cs.org/?p=1835   作者 James Le ,译者 尚剑 , 本文转载自infoQ 毫无疑问,机器学习/人工智能的子领域在过去几年越来越受欢迎。目前大数据在科技行业已经炙手可热,而...
  • 数据结构分别为逻辑结构、(存储)物理结构和数据的运算三部分。 为什么要学数据结构? 首先,因为数据结构作为计算机专业的专业基础课程,是计算机考研的必考科目之,如果打算报考计算机专业的研究生,你...
  • 程序员面试、算法研究、编程艺术、红黑树、机器学习5大经典原创系列集锦与总结 作者:July--结构之法算法之道blog之博主。 时间:2010年10月-2018年5月,一直在不断更新中.. 出处:...
  • 机器学习算法简要

    万次阅读 2018-11-20 11:33:45
    机器学习算法很多,按照是否有标注,以及要解决的问题特点,按照如下规则分类。 有监督学习 分类问题 决策树: 支持向量机 朴素贝叶斯:条件概率 集成学习(多分类算法的结合) Boosting:弱学习提升为强学习 ...
  • 人工智能之机器学习常见算法

    万次阅读 多人点赞 2016-05-22 15:47:54
    机器学习无疑是当前数据分析领域的一个热点内容。很多人在平时的工作中都或多或少会用到机器学习的算法。这里IT经理网为您总结一下常见的机器学习算法,以供您在工作和学习中参考。 机器学习的算法很多。很多...
  • 学习算法一个极好的工具VisuAlgo

    万次阅读 2014-12-05 08:50:41
    中文版页面,可视化学习算法,帮助你理解算法的每过程(动画演示),并演示每步骤的过程代码,非常不错!http://zh.visualgo.net/
  • 如何学习算法的相关文章,大家估计也见过不少,每人的学习方法都不尽相同,这很正常,并且,对于不同的选手,例如打 ACM 的玩家和不打比赛的玩家来说,训练的方式也会有所差异,所以别人所说的学习方式,更多的是...
  • 机器学习:高级算法课程学习总结

    千次阅读 多人点赞 2019-01-15 21:44:31
    作为一个机器学习方面的小白,在闵老师课上学的两个聚类算法,即经典的K-means聚类和基于随机游走的聚类算法,是我学习到的头两个与机器学习相关的算法算法课上,闵老师先讲了简单但是经典的K-means聚类算法,让...
  • 机器学习/深度学习算法学习心得

    千次阅读 2018-07-29 00:00:51
    本文的写作目的方面是总结下自己的学习心得,另方面是给那些想学习并且想从事算法工程师一点小小的参考,欢迎大家多多交流! 基础学习心得 想要入门机器学习,至少需要提前掌握以下两种技能 必要的数学...
  • BAT算法工程师的成长之路,超详细的学习路线

    万次阅读 多人点赞 2020-10-09 13:34:27
    算法学习路线,主要分为 4 部分:数学基础、编程能力、算法基础、实战。
  • 机器学习&深度学习算法及代码实现

    万次阅读 多人点赞 2017-04-05 20:38:50
    最近在学机器学习,学习过程中收获颇多,在此留下学习记录,希望与同道中人相互学习交流机器学习简介1、机器学习运用学习算法,利用所给的数据进训练,生成相应的模型。在面对新情况时,根据模型,给出正确的判断。2...
  • 【数据结构与算法】如何高效学习数据结构与算法

    千次阅读 多人点赞 2020-05-23 23:30:44
    如果想成为一个高级开发工程师或者进入大厂,不论岗位是前端、后端还是AI,算法都是重中之重。也无论我们需要进入的公司的岗位是否最后是做算法工程师,前提面试就需要考算法。所以`小时不学算法,长大掉头发`。
  • 深度学习最常用的学习算法:Adam优化算法

    万次阅读 多人点赞 2018-01-26 00:00:00
    听说你了解深度学习最常用的学习算法:Adam优化算法?-深度学习世界。深度学习常常需要大量的时间和机算资源进行训练,这也是困扰深度学习算法开发的重大原因。虽然我们可以采用分布式并行训练加速模型的学习,但所...
  • 机器学习常见算法整理

    万次阅读 2019-12-06 16:56:01
    1.XGBoost算法 1.1算法特性 用于解决二分类问题,同时通过使用许多策略能够防止过拟合现象发生,模型准确率比普通算法要高。XGBoost支持并行化计算,使得算法在模型训练及模型计算时运行速度快,效率高。XGBoost...
  • 算法学习:蝙蝠算法简介

    千次阅读 2018-08-24 16:03:36
    蝙蝠算法(Bat Algorithm,缩写 BA),是种元启发式优化算法,是杨新社(音译自:Xin-She Yang)在2010年提出的算法[1]。这蝙蝠算法以微蝙蝠(microbats)回声定位行为的基础,采用不同的脉冲发射率和响度[2][3]...
  • 强化学习—DQN算法原理详解

    万次阅读 多人点赞 2019-01-23 11:39:06
    常见的是以DQN为代表的value based算法,这种算法中只有一个值函数网络,没有policy网络,以及以DDPG,TRPO为代表的actor-critic算法,这种算法中既有值函数网络,又有policy网络。 说到DQN中有值函数网络,...
  • 【机器学习基础】EM算法

    万次阅读 多人点赞 2019-06-04 14:24:39
    目录 样例 二 公式描述 三 参考文献 最大期望算法(Expectation-maximization algorithm,又译为期望最大化算法),是在概率模型中... 最大期望算法经过两步骤交替进行计算: 第步是计算期望(E),...
  • 机器学习:常见的机器学习算法归纳

    万次阅读 多人点赞 2021-03-11 09:22:43
    1) .回归算法 2) .基于实例的算法 3) .决策树学习 4) .贝叶斯方法 5) .基于核的算法 6) .聚类算法 7) .降低维度算法 8) .关联规则学习 9) .集成算法 10) .人工神经网络
  • 算法学习建议

    千次阅读 多人点赞 2017-07-27 10:12:00
    学习算法,可以先阅读本简单的入门书,然后综合几本书横向多角度看,例如学习动态规划,拿几本算法书,把动态规划这章找出来,比较学习,多角度对比分析更清晰,或许你会恍然大悟,噢,原来如此简...
  • 一个好的学习算法的网站

    万次阅读 2013-05-20 11:19:10
    一个朋友的博客,很多算法题 http://blog.csdn.net/niushuai666/article/details/6637263 http://www.cnblogs.com/zhangchaoyang/category/256478.html   有几篇关于算法的文章,待以后慢慢一个个的突破。 ...
  • 生成学习算法之朴素贝叶斯算法

    千次阅读 2016-09-02 21:37:02
    对于我们的激励的例子,考虑使用机器学习建立一个电子邮件的垃圾邮件过滤器。这里,我们希望根据它们是未经请求的商业(垃圾)电子邮件还是非垃圾邮件进行分类。在学习了这样做之后,我们然后可以让我们的邮件阅读器...
  • 机器学习算法

    千次阅读 2016-07-01 17:38:25
    这里 IT 经理网为您总结一下常见的机器学习算法,以供您在工作和学习中参考。  机器学习的算法很多。很多时候困惑人们都是,很多算法是类算法,而有些算法又是从其他算法中延伸出来的。这里,我们从两方面来...
  • 目录 学习方式 监督式学习: 非监督式学习: 半监督式学习: 强化学习: ...算法类似性 ...回归算法: ...基于实例的算法 ...决策树学习 ...基于核的算法 ...聚类算法 ...关联规则学习 ...深度学习 ...、KNN算法的优点 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,273,581
精华内容 509,432
关键字:

如何学习一个算法