当前位置:   article > 正文

数据挖掘思维和实战24 实践 5:使用 fatText 进行新闻文本分类_新闻文本分类实验操作

新闻文本分类实验操作

你好,欢迎来到第 24 课时,这是我们的最后一节实践课,也是我们的数据挖掘思维与实战的最后一节正课。在这节课中,我将为你讲解数据挖掘在自然语言处理领域最典型的应用——文本分类,并带领你一步步解决文本分类的问题。话不多说,让我们开始课程吧。

fastText 算法

这里我们先简单介绍一下 fastText,因为我们在前面没有提到过这个算法,你可能有点疑惑这是个什么东西。fastText 与我们上一课时介绍的 Word2Vec 的 CBOW 方法十分类似,可以说是在 Word2Vec 的基础上探索出来的。它的结构与 Word2Vec 非常类似,也是一个浅层神经网络模型,有一个输入层、一个隐藏层和一个输出层,其中输入的也是文本的向量。

当然了,它们也有很多区别。首先,fastText 是一个分类算法,是有监督的,输出层输出的是一个分类标签。另外,在输入层,除了词本身的向量,还增加了 n-gram 方法来把词划分成若干个子词。比如说设置 n-gram 为 2,“拉勾教育”可以分成“拉勾”“勾教”“教育”,这些子词的向量也加入输入向量中,这样对于低频词更友好一些,它们的字符级别 n-gram 可以与其他词共享信息量,并且在新的数据集上面,对于词库中没出现过的词,可以使用 n-gram 来为它们叠加向量。

除了这些,fastText 的训练非常迅速,虽然是浅层神经网络,但是分类效果可以接近深度神经网络。使用 BERT(流行的深度神经网络自然语言处理算法)要花几十个小时才能训练完的任务,使用 fastText 可能只需要几分钟。

关于 fastText 的简单介绍就先说到这里,接下来我们进入数据挖掘的环节。

理解业务与理解数据

新闻会涉及方方面面的内容,是一种泛领域的内容信息。要给新闻分类,我们首先要有一套分类体系。我们期望能够构建一套完整的、可以覆盖所有新闻内容的分类体系。这个分类体系有着自上而下的结构,由粗粒度到细粒度一层一层逐渐展开。

就如下图展示的,我们需要构建一个有三个层级的分类体系

一级分类粒度最粗,覆盖面也最广,每一个分类标签都囊括了一大波内容,几乎所有的内容都可以被分为其中的一个或多个类别。

二级分类标签相对较细,是在一级标签的基础上进行的扩充,比如说在体育下面又细分成足球、篮球、乒乓球、羽毛球等二级分类标签。二级标签开始,就可能存在覆盖不全面的问题,有些新闻可能无法找到合适的二级分类标签为其标注,所以我们在每一个组二级分类下面增设一个“其他”类别。

三级分类又在二级分类的基础上进行了扩充,粒度更加细致。相应的,三级分类也都增设“其他”类别。

Lark20201020-162149.png

很明显,我们的分类体系是多层级、多标签、多分类的,在具体的实现上,很难依靠单一的算法直接给出结果。当然,在动手去做之前我们还需要对数据有一些了解。

对于新闻,我们多多少少都有些了解。通常来说,一篇新闻都会有一个标题、一篇正文,还有发布时间和发布源。在正文中,可能会有一些配图,这些是新闻的基本内容。对于新闻最重要的正文部分,一般也都会有相对比较固定的写作格式,以及相对标准的新闻内容。比如事件的起因、经过、结果、重要人物、发生的时间、地点等要素。这些信息在新闻中占据了很重要的信息量,在做分类的时候,如果能够恰当地提取和使用这些信息,将会使你的准确率大大提升。

接下来我们就看一下,如何去构建一套完整的数据处理和模型预测体系。

准备数据与模型训练

要想使用 fastText 对新闻文本进行分类,我们需要对数据做一些预处理。让我们先来看一个简单版本的分类。

这是 fastText 的官方地址:https://github.com/facebookresearch/fastText

这里讲解了如何使用 fastText 的基本内容。需要注意的是,fastText 需要用到 C++ lib 的支持,如果你的电脑上没有安装 C++ lib 库,可能会报错。

下面是官网介绍的安装方法:

$ wget https://github.com/facebookresearch/fastText/archive/v0.9.2.zip
$ unzip v0.9.2.zip
$ cd fastText-0.9.2
$ make
  • 1
  • 2
  • 3
  • 4

完成了 fastText 的安装之后,可以直接使用命令来进行模型的训练。我们前面说了,fastText 除了可以进行文本分类以外,还可以用来获取中间产物 Word2Vec 的词向量表。
如果要使用 fastText 获得词向量,可以使用下面的语句,其中的 data.txt 是我们需要输入的训练语料。训练完成后会获得两个文件“model.bin”和“model.vec”。其中 bin 文件是用来存储模型参数以用来追加训练的,vec 文件是词向量文件。

$ ./fasttext skipgram -input data.txt -output model
  • 1
  • 1

如果要追加训练,可以使用下面的语句,queries.txt 是新的文本文件,其中可能包含了模型中不存在的单词。

$ ./fasttext print-word-vectors model.bin < queries.txt
  • 1
  • 1

对于文本分类,我们则需要使用下面的语句了,这里需要注意的是,train.txt 文件是我们的训练语料,它需要被处理成固定的格式,其中每一行是一条训练数据,在每一行的开头加入数据的标签,并在标签上加入前缀“__label__”,多个标签之间使用空格隔开。比如说我们的新闻标签“科技”“娱乐”,就写成“__label__科技 __label__娱乐”。

$ ./fasttext supervised -input train.txt -output model
  • 1
  • 1

在训练完成后,我们仍然会得到与上面相同的文件,只不过这次 bin 文件可以用来对新数据进行预测了。除了直接使用语句来进行训练,我们当然也可以在 Python 中使用 fastText 算法包来进行模型的训练。

在这里,我找了一份带有标注的数据(cooking.stackexchange.tar.gz)并放在了我们的代码库中,你可以拿来练练手,关于 Python 的调用方式留给你自己来进行探索。

一个完整的大型分类模型迭代流程

当然了,在我们实际的生产环境中,问题往往没有这么简单,多级多标签多分类要想获得还不错的结果,需要对各个环节进行多种尝试和处理。在下面,我画了一张关于整个数据处理和模型训练的迭代流程图,基本上涵盖了我们整个算法模型的处理过程,让我们来看一下其中都有哪些步骤。

Drawing 2.png

基础数据层

首先,在最左侧的是我们的基础数据,前面我提到过,新闻中有很多特征载有非常重要的信息,比如说人物、地点、时间等,这些都属于词库的范畴,如果我们有比较完善的词库,其实会节约很多时间并取得较好的效果。

其次是我们的标签库,这个不需要过多解释,这个库就是来维护我们需要进行学习和预测的标签。样本库对我们的样本进行管理,在这里就是存储了我们的新闻信息以及我们所需要用来训练的相关数据。

最后一个抓取则是一种手段,有些时候我们自己的数据可能存在着各种各样的问题,需要借助一些外部的数据来支持我们的工作,那么就可能会用到抓取的手段。

基础特征

完成了基础数据的构建,下一步就开始构建一些基础特征,这一环节还可能包括对数据的分析等。

在这个环节,我们也需要用到很多算法或者策略。比如说对于文本进行分析,提取其中的关键词、实体词,对图像信息进行识别;再比如识别其中的人物或者场景,识别图像的质量,等等。

在这一步,我们把很多原始的数据进行了算法加工,从中提炼出一些信息含量更高的特征信息,以方便下一步有针对性的特征选择与向量化。

特征选择与特征向量化

在特征选择与向量化环节,主要是针对后续可能会用到的模型来进行针对性的处理。比如说对于 SVM 算法,那我们可能需要对关键词信息进行加工以适配 SVM 算法;而对于 fastText 算法,相对比较简单,可以只用分词后的结果,当然也可以在其中拼接上重要性更高的实体词等信息,来加强学习的效果。

在这一步,我们要针对后面即将实施的算法实验来针对性地选择特征,并把特征构建成算法可以接收的形式。

算法选型

紧接着,我们就进入了算法选型的步骤。对于多级分类,我们可以采用自顶向下的方法,先进行最高级的分类,确定一级分类,再去构建一个模型来处理二级分类,以此类推。

也可以采用自底向上的方法,先使用一个大分类器或者若干个二分类器,去预测所有的最底层分类,然后再向上总结。

当然,除了这两个方案,还有很多可以处理模型融合的方法。除此以外,对于有众多分类标签的分类器,我们也可以叠加一层规则系统,来对一些特殊的情况进行修正和处理。

在这一步,我们还需要对各种算法的效果进行对比,并确定我们到底要使用什么样的算法模型来解决其中的每一个问题。

模型评估与优化

与我们的算法选型十分紧密的下一个环节,就是整个评估和迭代环节。其实我们每一个算法模型,都会有相应的准确率、召回率等指标来评估模型的效果。同时,根据效果的反馈,我们来决策该如何融合各个模型,并有针对性地来进行模型迭代。

比如说,如果我们发现“娱乐”下面有一个三级分类为“动漫”,它的分类结果与“文化”下面的“漫画”很难进行区分,这时候就需要考虑是否要把这两个合成为一个标签,或者是否有什么特征可以区分这两个内容。

修饰处理

解决了上面的细节问题,我们就可以对模型的结果来进行一些最终的修饰处理了。一个大型的分类体系可能不是通过一次训练就能解决所有问题,但是不能因为部分问题还没有解决而无限期地进行迭代,我们的结果最终还是要落地到项目上,发挥实际的价值。

所以我们可能需要一个过滤和筛选,暂时屏蔽那些还没有解决的问题。这样当我们在后面的迭代工作中,只要解决了这个问题,再对这个修饰环节进行简单的调整,就可以重新上线了。

模型部署与结果保存

这样,我们的分类模型就可以进行部署应用,来实现算法的输出了。当然,在输出的过程中,我们还需要有一些机制来收集输出的结果以及 badcase,我们把这些东西积累到基础数据中,在经过一段时间之后,就可以有更多的数据来支撑我们的模型迭代了。

总结

至此呢,我们最后一节实践课就讲完了。这一课时,我们以一个多层级的新闻文本分类为背景,先简单介绍了 fastText 模型;然后介绍了一种使用 fastText 来进行分类的简单案例;最后,我们引入了在实际的大型项目中,到底是如何进行多级分类的流程。

可以看到,在这个过程中,算法只是其中的一个环节,要想具体地解决业务中的实际问题,我们还需要做很多很多的工作。

那么我们的课程到这里也就结束了,非常感谢你能够坚持看完这门课程。在写作的过程中,由于各种各样的因素,内容难免存在一些错误和疏漏,如果你发现了问题,欢迎及时批评与指正。

最后希望你将还没有掌握的内容,回过头再详细看一下。我希望这 24 个课时的分享,可以为你解决一些困惑,帮助你在数据挖掘领域走得更长远。再见!

点击下方链接查看源代码(不定时更新)以及相关工具:
https://github.com/icegomic/GomicDatamining/tree/master/LagouCodes


到这里,我们的专栏就接近尾声了,但是对于数据挖掘的学习还远没有结束。在前面的课程中,我也只是对数据挖掘进行了比较浅显的讲解,我希望向你传达的是一种数据挖掘思维,而不只是单纯地学习一门技术。当然了,如果你想在数据挖掘这个方向继续走下去,其实还很多东西可以学习。

下面是一张国外大神绘制的“数据科学家技能地铁图”,你可以看到密密麻麻的技能站点,但是不要怕,只要你掌握了其中任意一条地铁线路,你就已经是一个大神了。

image.png

原图地址:http://nirvacana.com/thoughts/2013/07/08/becoming-a-data-scientist/

光有技能点还不够,你需要掌握更多知识、了解更多项目、拥有更多数据,这就是我要在这个彩蛋中想告诉你的。

努力输入

1.从书上系统地学习知识点

通常来说,你想要对一门知识进行比较系统的学习,那么找一本专业的书籍会是一个很好的开始。专业书中对技术的讲解通常是比较细致的,而且会有很多前因后果,可以帮助你系统地了解一门知识的整体架构。

2.利用网络

书上的东西虽然比较系统,但是也比较艰深,这个时候我们还需要利用网络来学习。网络上有各种各样的付费课程,从入门到实战,只要你想学就永远有新的课程,但是它们的价格通常也非常“刺激”。所以我所说的利用网络,主要是用那些免费的资源。

首先是知乎、CSDN 等各种问答网站、博客,里面有很多人分享自己的学习、工作心得,也有人咨询自己不懂的问题。在学习或工作的过程中,你所遇到的问题往往都已经有很多人遇到过,而这里面的分享中,有很多解释得比较诙谐易懂,比书本上的枯燥知识容易理解得多。所以你可以在这些地方定向寻找你想要的答案、完善你的知识体系。

另外,有很多同学喜欢看视频学习,听别人讲解,这也是一种非常流行的方式。刚才说了,网络上有很多高质量的视频课程,比如 b 站、网易公开课、MOOC、Coursera 中,有很多大学甚至个人公开的精品课程,如果你能把这些都好好学习一下,也可以受益匪浅。

上面这几种资源通常都需要你主动去探索。除此以外,你可以关注一些互联网公司、学校、科研院所、机构或者个人的微信公众号,他们会分享一些前沿技术、实战经验,等等,经常查看他们分享的内容也有助于你了解相关的知识。

如果你还想更加深入地了解最新的技术动向、追踪技术热点、研究主流方向,你可以关注相关领域的顶级会议和期刊发表的文章,比如 KDD、IJCAI、IEEE 的各种分会,等等。这里给你分享一个康奈尔大学的论文搜索网页,通常已经发表的论文都可以在这上面搜索到:https://arxiv.org/list/cs/recent

3.如何实践

光学一些知识还是不够的,从理论到实践还有一段距离。我们学的东西最终都要拿来使用,如果你是一名职场人,那么就需要落在你的工作中、业务上,没有业务的技术就如同镜中花水中月,发挥不了价值。

同台竞技。 如果你还没进入职场,或者工作中没有相关的场景可以让你实践,那么你可以去参加一些比赛。关于数据挖掘的比赛还是挺多的,比如 Kaggle 等,可以让你快速地了解整个数据挖掘过程。

站在巨人的肩膀上。 如果你在工作中已经经历过一些落地场景,那么你可以去 Github 上面寻找对应的开源项目,分享的人非常多,因此大部分的基础场景都有覆盖。而且还会有人分享数据和已经训练好的模型,这可以极大地节约你的工作时间,让你可以在有限的时间内做更多的事情。

4.提升综合能力

在学习技术的同时,一定不要忽视了其他方面的知识增长。还应该多学习一些实用的东西,比如如何制作一份让人震撼的 PPT?如何心平气和地和产品经理聊需求?如何在恰当的时机向 boss 提出升职加薪请求?嗯,我只是想表达,对于一个职场人来说,周边能力也很重要,这些看似没用的东西往往能决定技术所能达到的高度。

5.丰富你的阅读面

当然,除了最核心的技术,你还应该多涉猎一些其他内容。因为我们的技术不是凭空存在的,它一定会涉及某个业务、某个场景、某个领域,并在其中发挥作用,才真正实现了技术本身的价值。

因为我是一个充满好奇心的人,平时就喜欢看一些“没什么用”的书,比如《禅与摩托车维修艺术》《论人类不平等的起源和基础》《酒鬼旅行指南》等,这些书虽对我们提升能力作用不大,但里面涉及的一些自然语言的处理方式,能够为我们提供一些意想不到的思路。

做好输出

上面我所列举的都是我们应该去学的一些东西,但是单纯的输入还不足以让我们达到跨越式的发展,我还想说的一点就是,做好输出。

1.做好日常记录

简单来说,就是写日报。

很多时候做事情是遵循 20 / 80 法则的,有些时候甚至是 2 / 98 法则。比如工作总结、年度计划,做这些事情的机会很少,可能都远远不及你工作的 2%,但是一旦要做,却有着“致命”的难度。不过,你要记住,不管是 20%,还是 2%,这些都是跟剩余的 80%、98% 息息相关的。只有经过日积月累,才会在关键时刻保质保量完成这些事情。

工作本来就是相对枯燥和单调的,坐在办公室里写代码的日子一晃而过,可能事后很快就记不起来自己做过什么了。这不像出门旅行,可能过去好几年之后,再提起来你还能眉飞色舞地描述当年的场景。所以工作的时候要做好记录,每天抽出一点点时间,回忆自己都做了什么、遇到了什么问题、为了解决问题都做了哪些尝试、明天又准备做什么,等等。

我就是这样,随着年纪越来越大,越来越容易忘事,自打用了这个方法,再也不怕忘记产品部门提出的需求、不怕领导安排的会议了,写周报也“有劲”了,很少出现那种“自己好像一直在忙碌,却怎么都想不起来都做了什么”的感觉。

2.写好技术文档

程序员加班似乎是一个稀松平常的事情,每天看着产品经理一下班就收拾东西走人,而自己手里还有无数个产品需求要解决,心里很不是滋味。所以经常会急于写好项目代码,而忽视了注释和技术文档的重要性。

起初经验还不算丰富的时候,做的项目比较少,还能记得清自己做过什么,可是年岁稍微长一点之后,一些小的项目就记不得了,甚至遇见一些冗长的遗留代码,根本不明白为什么要这么写。

想想这样一个故事吧,我花了两天时间开发了一个服务接口,要从 CCTV 网站上爬取节目表,然后传给另外一个人。这是一个一次性的接口,从那之后接口一直运行良好,相安无事。可是过了一年半,CCTV 网站竟然改版了,显然我的服务接口不再有效。业务方的反应很快,没过多久就找到我,说我的接口挂掉了,获取不到数据,可是我却一脸懵地看着他说,什么接口?

于是,我又从头了解这个需求,又花了几天时间才把这个接口重新实现。而如果我在最初就写好了文档和注释呢?那情况就不一样了,当遇到问题的时候,我把文档拿出来看一看,大概就能了解做法,很快地修复接口的问题了。

3.做好技术总结

在工作中,我们总会遇到各种各样的问题。小到一个参数的配置,大到一个项目的实施,每一个环节都有可能成为卡住项目进度的绊脚石。我们会上网搜索解决方案,要在众多答案中筛选有效方案,当看了很多文档之后把问题解决了,就把这件事丢到一边。可是过了没多久,当遇到一个类似的问题而自己却记不清楚时,又要重新搜索一遍,浪费了很多时间。

所以,在工作中,解决了一个问题不要着急进行下一步,而是要做好总结。如果解决方案在一个博客中,那就把博客剪切下来,这时有道云笔记或 evernote 能帮我们很大的忙;而很多时候我们会依据网页上的方案,那就要动手把它记下来,以防下次找不到,一些成熟的方案你也可以写到博客上,分享给更多的人。

总结

关于数据挖掘工程师如何进阶,我在这里就为你分享这么多,也许不够全面、不一定是最佳途径,但这都是我的一些亲身体会,希望对你有所帮助。当然,如果你有一些好的方法,或者想法,不妨也分享出来,让我们一起进步。

虽然课程已经告一段落,但是我们的 Github 还是会继续更新下去,我在前面课时中提到的一些知识、数据,以及开源项目,我都会在 Github 中进行总结,所以记得关注哦。链接:https://github.com/icegomic/GomicDatamining/tree/master/LagouCodes


时间如白驹过隙,三个月的时间一晃而过。非常感谢你在这段时间里对这个专栏课程的支持,让我能够有动力持续写下去。

课程回顾

在这里我们先回顾一下前面的课程吧。本专栏总共有 24 课时,分成了 7 个模块。当然,这 7 个模块其实可以划分成三个部分:第一部分是基础知识,第二部分是数据挖掘工作流程,第三部分是算法与实践。

第一部分:基础知识

基础知识部分相对简单,而且内容也不是很多。主要对数据挖掘进行了简单的介绍,并讲解了我们在后续课程或者数据挖掘工作中可能会用到的一些工具、语法等内容,方便还没有了解相关知识的人快速入门。

第二部分:数据挖掘工作流程

在第二部分,我以一个相对成熟的流程架构开始,按照从前到后的顺序介绍了数据挖掘涉及的各个环节,以及各个环节需要做的事情、需要注意的要点。

这个部分其实是我对于自身工作的一些总结,是我想重点为你讲解的。因为在我过去的工作和学习中,有关数据挖掘的算法、例子很多,但是极少有教程可以告诉我到底该怎么去做数据挖掘,不太清楚一个合理的工作流程和思维方式是什么样子的,以至于我走了很多弯路,碰了很多壁。

在如今这个人工智能相当火热的时代,大量的研究人员可以创造出各种各样的算法,但是数据挖掘工作的思维和工作流程不会有很大的变化,你只有明白了这一点,不断培养自己的思维模式,才能更快地融入数据挖掘工作中。这也是我们的专栏——数据挖掘思维与实战中,我最想让你了解的部分。

第三部分:算法与实践

在这部分,我对数据挖掘中的常见算法进行了分门别类的讲解,涉及了分类、聚类、回归、关联分析以及自然语言处理的部分内容。在每一个算法模块,我都以一个例子开头,这个例子或许不是最恰当的,但是我希望能够让你通过例子建立与算法之间的联想,达到迅速记忆的效果。

我们对于算法的讲解也许并不详尽,没有介绍底层的数学公式和推导过程,但还是期望你能够明白它“是什么”和“怎么样”,这样当你遇到应用场景的时候可以再回过头来,深入地探究它“为什么”,这也不失为一种探索方式。

而在我们这个部分的 5 节实践课程里,我尽量没有涉及代码,而是从实际的工作例子出发,去讲解一个数据挖掘项目的工作过程,这与第二部分遥相呼应,重点还是期望你能够建立这样一种思维模式。

终身学习

我们的课程到这里就结束了,但是学习和探索的脚步不会就此停下来。

当今的世界变化十分迅速,想想三十年前大家还不知道电脑、互联网是个什么东西,二十年前智能手机基本上也无人知晓,十年前还没有的高铁如今已经遍布整个中国,甚至你所熟知的一些互联网公司在 5 年前还没有成立……

我们所处的环境无时无刻不在发生着急速的变化,新技术、新产品不断推陈出新,而我们要想在这个迅速变化的环境中保持竞争力,很重要的一点就是持续不断地学习

关于数据挖掘工程师应该学什么,我在上一课时的彩蛋中已经做了很多讲解。在这里我想补充的是关于学习的质量和效率问题。

终身学习的说法其实早就有了,谚语里说“活到老,学到老”,《论语》中也有“朝闻道,夕死可矣”的说法,可见终身学习的思想从古至今一直流传。但是在过去,由于受到地域和信息传递的限制,人们获取知识的方式有限,很多时候你甚至不需要关注质量和效率问题,因为你能够获取到的知识还不够你学习的。

但是现在,由于互联网的发展,来自世界各个角落、各个领域的知识都能够非常方便地获取,人人都可以成为知识的生产者,以至于我们进入了一个知识大爆炸的时代。我们穷尽一生,也不可能学完一个网站的内容,哪怕是一个分支内容都不大可能。

所以在这个时候,学习的质量和效率就成了一个很重要的问题。

关于质量

我们要多学习经过时间验证的知识,避免杂七杂八的垃圾信息。所谓经过时间验证的,就是那些有体系的内容,而不要把知识当作碎片来学习。知识都是有体系的,碎片学习的结果就是“只见树木不见森林”。

一套完整的知识体系就像一座城市,具备非常清晰的结构,比如关于医学的知识、关于投资的知识、关于我们数据挖掘的知识,在每一座城市中都会有流畅的公路把这个城市里的各个部分连接起来。而碎片的知识就像是搭建城市的建筑材料,如果那些碎片只是堆叠在那里,而没有在你的大脑中形成一座知识城市,那它们就是一堆建筑垃圾。

关于效率

只有高质量的内容还不足以满足我们的需求,在学习中还需要注重效率。尤其是对于已经工作的人,工作已经占据了大量的时间,平时的生活娱乐也是必要的时间支出,所以高效的学习方法尤为重要。

而我觉得,在效率方面,最需要具备的能力就是联想。对于新知识的学习,你要借助比喻和联想,把它迅速和自己所熟知的事物关联起来,比如自己的家乡、自己喜爱的食物,等等,充分的联想能够让你迅速建立起知识与知识之间的关系网络,从而能够快速进行记忆和理解。

当然,我在这里讲解得比较简单,所以我再给你推荐一本书《如何高效学习》,连人工智能之父马文明斯基都推荐过的学习方法,希望它能够对你有所帮助。

结语

天下没有不散的宴席,要到了和你说再见的时候。非常感谢这段时间以来你对课程的耐心学习。其实编写课程的过程,也是我对于自己知识体系的一次梳理,让我明白自己还有哪里是薄弱的、哪里还有待学习。

希望你在这门课程中,也学到了一些你所期望收获的内容,那将是我的无上荣幸。由于我的才疏学浅,课程中一定会有讲解不周、纰漏甚至错误的地方,如果你对其中的部分内容存在疑问,欢迎随时指出或与我联系。

课程虽然结束了,但是我们的学习不会结束,GitHub 还会持续更新,加入更多的内容。同时我还建立了一个公众号:机器学习之禅,欢迎关注,后续我会在这里分享一些数据挖掘和机器学习方面的知识,以及我自己积累的经验。让我们在终身学习中不断进步。

最后,奉上我学习的最终目标,与君共勉:

致广大而尽精微。

加油,一起努力!

点击下方链接查看源代码以及相关工具(不定时更新):
https://github.com/icegomic/GomicDatamining/tree/master/LagouCodes


精选评论

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/517545
推荐阅读
相关标签
  

闽ICP备14008679号