国内唯一的数据可视化在线课程,搜索网易云课堂“数盟数据可视化”,或点击文末阅读原文,轻松搞定数据可视化~
出处:csdn从零开始实现机器学习算法似乎是开发者理解机器学习的一个出色方式。或许真的是这样,但这种做法也有一些缺点。
在这篇文章中,你会发现一些很好的资源,可以用来从零开始实现机器学习算法。你也会发现一些看似完美的方法的局限性。你已经从零开始实现机器学习算法并努力学习留下的每一条评论了么?我很乐意听到关于你的经验。
从零开始实现机器学习算法!
从零开始实现机器学习算法的好处我推广了从零开始实现机器学习算法的观念。
我认为你可以学到很多关于算法是如何工作的。我也认为,作为一名开发者,它提供了一个学习用于机器学习的数学符号、描述以及直觉的桥梁。
在“从零开始实现机器学习算法的好处”这篇文章里,我已经讨论了从零实现机器学习算法的好处。
在那篇文章,我列出的好处如下:
你获取了知识;
它提供了一个起点;
拥有算法和代码的所属权。
在这篇文章中,我对如何利用现有的教程和书籍来缩短这个学习过程表达了一些个人看法。有一些用于初学的丰富资源,但也要堤防一些绊脚石。
下一节,我指出了三本书,你可以照着书籍从零开始实现机器学习算法。
在过去的几年里,我已经在机器学习入门中帮助了许多程序员。根据我的经验,我列出了五项曾困扰过程序员的最常见的障碍,以及你可以用来克服它们的技巧。
最后,你会发现个快速技巧,用以从代码教程中获得更丰富的知识,并从一个复制粘贴的程序员(如果你碰巧是其中一个)到一个真正深入机器学习算法的学者。
用于实现算法的优秀书籍我从零实现过许多算法,这些算法直接来自研究论文。这个过程可能非常困难。
跟着别人的教程来做是一个非常温和的开始。有很多优秀的资源,可以让你用来从零开始实现机器学习算法。也许最具权威性的是能指导你完成整个教程的书籍。
从啃书本开始学习有很多好处。例如:
其他人已经研究出了该算法并把它转换成了代码;
你可以使用它作为一个用于修改和实验的已知工作起点。
那么,一步一步引导你完成机器学习算法实现的出色书籍有:
《DataScincfromScratch:FirstPrinciplswithPythonbyJolGrus》这本书的确是从零开始,贯穿可视化操作、统计、概率、数据处理,然后是大约12个不同的机器学习算法。
这本书是我今年最喜欢的机器学习初学者书籍之一。
《MachinLarning:AnAlgorithmicPrspctivbyStphnMarsland》这本书是我期待已久的这本流行书籍的第二版。它涵盖了大量的不同种类的机器学习算法实现。
我喜欢它既给出了数学描述和伪代码,又包含了能执行的源代码。
《MachinLarninginActionbyPtrHarrington》该书贯穿了10个最受欢迎的机器学习算法,提供了案例研究问题并用Python代码实例来解决。
我喜欢它用符号和箭头把代码和描述紧密联系在一起的形式。
我是否有漏掉一本从零开始实现机器学习算法的编程教程书籍呢?
如果有,请在评论中指出!
常遇到的5个障碍,以及如何克服它们根据教程从零开始实现机器学习算法是很有趣的。但也有可能会成为绊脚石,而且如果你不小心,他们可能会绊倒你并抹杀你的学习动机。
在这一节中,我想指出我所看到的五个常见的绊脚石,以及如何与它们共存,而不是让它们阻碍你。我的目的是让你完全摆脱它并且破浪前行(或是转移到另一个教程)。
用来避免下面障碍的一些好的常规建议是在你深入一个教程之前,仔细检查书籍的评论(或博客帖子的评论)。你要确保代码是能够工作的并且保证你不是在浪费时间。
另一个常规策略是,无论深入的是什么,找出不工作的那部分,并自己去重新实现他们。这是一个强行理解的出色解决方法,但它可能不适合初学者,并且你可能需要一个很好的技术参考资料放在手边。
无论如何,让我们从零开始机器学习教程,深入研究这5个常见的障碍:
1)代码不能正常工作
最糟糕并且最常见的障碍就是实例当中的代码不能正常工作。
事实上,如果你花一些时间浏览亚马逊网站的一些书籍评论或博文评论,很显然,这个问题比你想象的更为普遍。
这是怎么发生的呢?有几个原因可能会给你提供一些线索,可以应用到你自己的修改中并继续使用:
代码从不工作。这意味着,这本书没有经过精心编辑就出版了。在这种情况下,你能做的并不多,除非是进入作者的大脑,并试图推测出他们的想法。或许还可以尝试联系作者本人或是出版商。
语言已变动。这种情况可能会发生,特别是如果该文章是发布已久的或者该书已印刷了很长一段时间。两个很好的例子是Ruby从1.x版本到2.x版本和Python从2.x版本到.x版本。
第三方库已变动。这通常发生在那些情况下,即实现不完全是从零开始并且使用了一些有用的库,如用于绘图的库。这通常不会那么糟糕。你可以通过经常更新代码来使用最新版本的库以及修改参数来满足API的修改。甚至可以安装一个旧版本的库(如果版本很少或是几乎不需要可能破坏开发环境的其它依赖库)。
该数据集已变动。如果数据文件是一个下载链接,并且已经失效(也许你可以在其它地方找到该文件),这种情况下就有可能会发生。如果这个例子是针对第三方API数据来源,比如Facbook或Twittr,该情况会更加糟糕。这些APIs可以迅速地改变很多。如果可能的话,你最好的办法是了解最新版本的API,并改写代码中的实例。
如果它是一本书、GitHub库、代码下载或者类似的,如果代码不工作,一个好的常规策略是寻找相关的勘误表。有时这些问题已经在书上或作者的网站上修正了。一些简单的谷歌搜索就能找到它们。
2)代码不规范描述
当从零开始实现算法时,我认为第二个糟糕的绊脚石是提供的代码描述很糟糕。
对于初学者来说,这类问题特别不好,因为你正在努力维持积极性,而实际上你是从练习中学习一些东西。如果代码和文本不一致,所有的这些都会在烟雾中渐渐消失。
我(或许比较温和)把他们称为“糟糕的描述”,因为可能有很多的症状和原因。例如:
代码和描述之间的不匹配。这可能是由于代码和文本在不同时间准备而造成的,并且不能正确地编辑起来。它可能是一些小的,如一个变量名称的变化,或者它可能是整个函数名或函数本身的变化。
缺失的解释。有时,你会得到你所期望获得的大量代码。这是令人沮丧的,特别是书中连篇累牍的代码,可能在屏幕上更容易理解。如果是这样的话,最好的方法是找到在线下载的代码并直接使用它来工作。
过于简洁的解释。有时你会对代码进行解释,但它们可能过于简单,如“使用信息增益”或任何其它的。令人沮丧!你可能还要花更多的时间来研究这个术语,但如果作者在上下文中包含了一个该术语的解释以及相关的实例,那么这就会显得更简单。
一个好的常规方法是在其它的资源里寻找算法的描述,并尝试将它们映射到你所使用的代码中。从本质上讲,是尝试建立你自己的代码描述。
这对初学者来说可能不是一个好的选择,你可能需要转到另一个资源上。
)代码不符合语言习惯
我们程序员可以对我们语言的“正确”使用咬文嚼字(如Python代码不是Pythonic)。这其实是一件好事,它显示了对细节和最佳实践的充分白癜风最好治愈方式北京去哪里医院治疗白癜风