自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(276)
  • 收藏
  • 关注

原创 看完就懂,五千字长文带你领略推荐系统

最近有一些小伙伴给我留言说非常想要我开一个推荐系统专题,其实我也有过这个想法,一直没动笔主要有两个原因。第一个原因是担心自己水平不够,班门弄斧或者是误导了一些读者。第二个原因是,我的确不知道这个专题应该怎么写。但是读者有求,总得回应不是,所以咬着牙写了本文。文章有点长,但是干货不少,希望大家能够耐心读完。推荐、广告、搜索三兄弟互联网行业当中有这么一句话,叫做:搜索、广告、推荐三兄弟。这句话是说这三个领域或者是三个方向的技术栈非常接近,甚至可以说是相差无几,可以自由转化。比如我也是今年才转到的推荐tea

2020-10-29 17:47:29 510

原创 git的远程分支是干啥的,和本地的有什么区别?

不知道大家有没有经历过,当我们切换到了一个新的分支想要提交代码的时候,总会遇到这样的错误。我们把日志里的英文翻译过来是说,我们当前的分支没有设置任何上游分支。然后git提示我们可以运行下面这行代码来设置远程的上游,这样我们就可以push成功了。当然如果我们push的时候执行的不是git push,而是后面再加上origin的话,就可以push成功了。比如这样:那么这是什么原因呢?这个origin分支又是什么意思呢?我们今天就来讨论一下这个问题。远程分支远程分支其实就是远程代码仓库当中的分支,比

2020-10-29 10:19:12 6207

原创 codefroces中的病毒,这题有很深的trick,你能解开吗?

大家好,欢迎阅读周末codeforces专题。我们今天选择的问题是contest 1419的C题,目前有接近8000的人通过了本题。今天这题的难度不大,但是真的很考验思维,一不小心就会踩中陷阱,我个人觉得非常有意思,适合周末动动脑。题目链接:https://codeforces.com/contest/1419/problem/C题意有一个叫做Killjoy的特工发明了一种新型的冠状病毒叫做Convid-2069,专门在codeforces平台上传播。这种病毒通过rating传播,只要两个人的rat

2020-10-28 10:11:46 511

原创 我在git merge的时候遇到了冲突,怎么解决?

大家好,今天来和大家聊一个老生常谈的问题,我们在使用git merge的时候遇到了冲突,怎么办?首先我们来看看为什么会冲突,git冲突的原因很简单,就是两个分支当中对同一处代码进行了不同的改动。于是git会困惑,不知道在merge的时候究竟应该怎么做,于是就会出现冲突。实战光说不练没有意义,让我们来实际操作一下。我们首先创建一个一个test.txt文件,在其中写入一行test。git add并且git commit。接着我们checkout -b创建一个新的分支,在这个分支当中我们把test.t

2020-10-27 10:10:04 9728

原创 面试不再慌,看完这篇保证让你写HashMap跟玩一样

今天这篇文章给大家讲讲hashmap,这个号称是所有Java工程师都会的数据结构。为什么说是所有Java工程师都会呢,因为很简单,他们不会这个找不到工作。几乎所有面试都会问,基本上已经成了标配了。在今天的这篇文章当中我们会揭开很多谜团。比如,为什么hashmap的get和put操作的复杂度是O(1)O(1)O(1),甚至比红黑树还要快?hashmap和hash算法究竟是什么关系?hashmap有哪些参数,这些参数分别是做什么用的?hashmap是线程安全的吗?我们怎么来维护hashmap的平衡呢?让我们

2020-10-24 09:34:44 177

原创 Git操作文件的时候手贱了,怎么恢复?

我们在使用git的过程当中很难避免的一点就是手贱,因为人嘛总有犯错疏忽的时候,有时候一不小心就操作错了。我也经常遇到这种情况,所以这时候对git的了解和掌握就非常重要,即使操作错了,我们也可以通过git还原到我们希望它变成的状态。下面我们来看几个例子,来实际体验一下git的强大。不小心add错了这是一个非常非常容易出现的问题,我自己也经常遇到。有时候编译出了二进制文件,明明知道是不应该添加进git管理的。因为添加进来之后会使得整个repo变得非常大,别人clone和pull都非常费劲。而且前面也说过了,

2020-10-23 10:23:49 839

原创 学会这三个命令,你就不再是git只会用三板斧的菜鸟了

前言在之前的文章当中我们介绍了最基本的git add、git commit和git push的用法以及基本原理,还介绍了gitignore文件的设置方法,从而让我们可以使用git add .来添加我们想要的文件,而不必要手动区分。今天我们继续来介绍几个git当中常用并且重要的命令,它们分别是git diff,查看提交历史的git log。git diffgit diff是一个非常好用的命令,很多大牛都用它查看代码的改动,因为它的确非常方便。git diff命令可以查看当前工作区与暂存区的差别,也就是

2020-10-22 10:00:14 534

原创 算法题 | 你能想出解法,让你的基友少氪金吗?

大家好,今天codeforces专题选择的是一场education比赛的C题。Education是codeforces的一种特殊赛事,它的主要作用是教育,也就是让更多的人了解codeforces的比赛机制。所以education赛事的题会相对来说容易一些,更加适合新手。我选的这道题虽然是C题,但是难度并不高非常基础。链接:https://codeforces.com/contest/1418/problem/C这题通过的人数有3600多,相比之前介绍的题算是比较少,但是题目难度其实更低一些。我们废话不

2020-10-21 10:18:31 245

原创 非典型算法题,用程序和电脑玩一个游戏

大家好,欢迎阅读周末算法题专题。今天选择的算法题是来自contest 1407比赛的C题,这题全场通过6700余人。通过的人数虽然多,但是这题真的不简单,想出算法来不太容易。抛开难度不提,这道题非常非常有意思,老实说这种形式的题目我也是第一次见。题目链接:https://codeforces.com/contest/1407/problem/C废话不多说,我们来看题目。题意这题是一道非典型的算法题,与其说是一道算法题不如说更像是一个游戏。游戏的目的是猜一个1至n这n个数构成的排列,我们需要通过输入

2020-10-19 10:03:14 169

原创 详解command设计模式,解耦操作和回滚

大家好,欢迎来到设计模式专题,我们的主旨是介绍一些有趣好玩的设计模式。今天我们介绍的设计模式叫做命令模式(command),在这个模式下,我们可以实现do和undo的解耦,让使用方不用关心内部的实现细节。command模式这个模式我们在日常当中经常使用,举一个很简单的例子,比如说我们发布代码。发布了之后发现不小心发布上去了一个bug,这个时候我们应该做什么?很简单,就是回滚,把线上的代码回滚到这一次发布之前的代码。这样我们这次发布带来的改动就会被消除,那么就避免了bug的产生。那么,对于一个发布系统

2020-10-16 10:18:03 287

原创 matplotlib画图教程,设置坐标轴标签和间距

大家好,欢迎来到周四数据处理专题,我们今天继续matplotlib作图教程。在上周的文章当中我们介绍了如何通过xlabel和ylabel设置坐标轴的名称,以及这两个函数的花式设置方法,可以设置出各种各样的名称显示方法。今天我们来介绍介绍其他的设置。xlim、ylim我们首先来介绍坐标轴的范围,坐标轴的范围很好理解,有的时候我们产出的数据的范围可能并不是完全我们想要的。如果我们不对坐标轴的范围进行设置的话,那么matplotlib默认会按照我们数据的范围来自动选择它认为最合适的区间来展示所有的数据。举

2020-10-15 09:32:20 17885

原创 详解工程师不可不会的LRU缓存淘汰算法

大家好,欢迎大家来到算法数据结构专题,今天我们和大家聊一个非常常用的算法,叫做LRU。LRU的英文全称是Least Recently Used,也即最不经常使用。我们看着好像挺迷糊的,其实这个含义要结合缓存一起使用。对于工程而言,缓存是非常非常重要的机制,尤其是在当下的互联网应用环境当中,起到的作用非常重要。为了便于大家更好地理解,我们从缓存的机制开始说起。缓存缓存的英文是cache,最早其实指的是用于CPU和主存数据交互的。早年这块存储被称为高速缓存,最近已经听不到这个词了,不知道是不是淘汰了。因为

2020-10-14 10:07:17 323

原创 详解深度学习感知机原理

大家好,欢迎阅读深度学习专题。我们之前的机器学习专题已经结束了,我们把机器学习领域当中常用的算法、模型以及它们的原理以及实现都过了一遍。虽然还有一些技术,比如马尔科夫、隐马尔科夫、条件随机场等等没有涉及到。但是这些内容相比来说要弱一些,使用频率并不是非常高,我们就不一一叙述了,感兴趣的同学可以自行研究一下。我想像是GBDT、SVM这些模型都能理解的话,那些模型想必也不在话下。深度学习简介深度学习最近几年非常火,很多人会把它和人工智能扯上联系。这里的深入并不是指学习深入,也不是指概念很深入,只是单纯地指

2020-10-13 10:22:09 842 1

原创 详解gitignore的使用方法,让你尽情使用git add .

大家好,欢迎来到周一git专题。今天和大家聊聊gitignore的作用,其实如果你英文还可以的话,你应该已经基本上猜到它的作用了。ignore在英文当中的意思是忽视、忽略,gitignore自然就是git当中的忽视和忽略,言下之意就是忽略某些文件。所以gitignore的作用就是帮助我们在git add时将我们指定的一些文件自动排除在外,不提交到git当中。ignore的作用看到这里你可能很疑惑,git创造出来就是为了管理代码和文件的,为什么还要禁止一些文件提交呢?其实也很简单,举个很简单的例子。比

2020-10-12 10:02:48 2740 1

原创 算法题 | 你追我,如果你追到我……那就算你赢了

大家好,欢迎阅读周末算法题专题。今天选择的算法题来源于昨天同一套题中的D题,这题全场通过的人数在2600人左右。虽然通过的人数更少了一些,但是题目的难度却并没有增加很多,但是趣味度增加了。我也是第一次遇见这样的问题。题目链接:https://codeforces.com/contest/1405/problem/D废话不多说,我们一起来看这题的题意。题意我们都知道数据结构当中的树有这样一个性质,如果树当中有n个点,那么它应该由n-1条无向边组成。并且树当中是一定没有环的,如果有环的话n-1条边就不

2020-10-09 10:15:24 330

原创 险些翻车,差一点没做出来的基础算法题

大家好,欢迎大家阅读周末算法题专题。今天我们选择的题目是codeforces 1405比赛的C题。题目链接:https://codeforces.com/contest/1405/problem/C这道题有6800多人通过,怎么看也不算是难题,但是我做了一上午都没能AC。最后又苦思冥想了很久,才最终做出来。做出来之后的第一感觉就是这道题太牛了,值得一说,算是那种谁都能看懂题意,都能想想办法,但是能做出来很不容易的问题。还是一如既往的codeforces赛题的风格,不严格考察算法,你做不出来大概率不

2020-10-08 10:08:07 233

原创 从抽象类开始,详解责任链模式

大家好,欢迎大家阅读设计模式专题。今天我们继续介绍新的设计模式,和上次的链式模式不同,这一次要介绍的责任链模式不仅仅在Python当中有,在很多其他的语言当中同样支持,比如Java。Python和Java当中的这个设计模式是完全一样的,没有任何区别。和之前介绍的设计模式相比,今天介绍的设计模式同样不难。我们非常容易想明白它的原理。责任链在我们日常的开发当中,经常会有上下游的依赖,比如当前我们需要开发一份新的数据,需要用到上游的某一份老数据才能生成。这时候需要我们写一个接口,然后上游也随之改造,把它们

2020-10-07 09:59:01 435

原创 matplotlib绘图教程,设置标签与图例

大家好,欢迎大家阅读周四数据处理专题,我们继续介绍matplotlib作图工具。在上一篇文章当中我们介绍了matplotlib这个包当中颜色、标记和线条这三种画图的设置,今天我们同样也介绍三种新的设置。分别是标题、轴标签以及图例,这三个内容也是非常实用并且常用的。颜色、线条、标记这些设置的是图像本身的一些属性,而标题、轴标签这些数据是额外提供的补充数据,所以这两者的内在逻辑是不同的。设置标题和公众号一样,图像的标题也很重要,它直接告诉我们这幅图表达的内容。举个例子来说你画了logistics的函数图像

2020-10-06 10:00:03 2085

原创 ACMer不得不会的线段树,究竟是种怎样的数据结构?

大家好,欢迎阅读算法数据结构专题,今天我们来聊聊一个新的数据结构,叫做线段树。线段树这个数据结构很多人可能会有点蒙,觉得没有听说过,但是它非常非常有名,尤其是在竞赛圈,可以说是竞赛圈的必备技能。所以如果以后遇到有人看了一点算法导论就在你面前装逼,你就可以问他:请问线段树更新的复杂度是多少?不过如果你会线段树,你也要小心一点,最好不要在面试的时候随便透露你会这个算法。否则面试官一下子就会知道你是圈里人,然后你会发现你后面的面试问题比之前好像难不少。当然也有可能遇到面试官自己不会,为了防止尴尬强行让你用非线

2020-10-05 10:15:37 448

原创 详解SVM模型——核函数是怎么回事

大家好,欢迎大家阅读周二机器学习专题,今天的这篇文章依然会讲SVM模型。也许大家可能已经看腻了SVM模型了,觉得我是不是写不出新花样来,翻来覆去地炒冷饭。实际上也的确没什么新花样了,不出意外的话这是本专题最后一篇文章了。下周我们就要开始深度学习之旅了,我相信很多同学期待这一天已经很久了,实际上我也一样,因为这个专题里讲的大部分内容已经只在面试环节会用到,而我已经很久没有面试了。所以让我们收拾一下激动的心情,来把SVM最后剩下的一点内容讲完。虽然只剩下最后一点内容了,但是今天的内容非常重要,可以说是SVM

2020-10-02 09:22:20 1436

原创 Git入门教程,详解Git文件的四大状态

大家好,欢迎来到周一git专题。git clone在上一篇文章当中我们聊了怎么在github当中创建一个属于自己的项目(repository),简称repo。除了建立自己的repo之外,我们更多的情况是拷贝别人的repo,这样才可以获得别人整理好的代码资料什么的,也更符合开源(白嫖)精神嘛。这也不是什么难题,相信很多人都知道,当我们想要获取其他人的repo的时候,可以通过git clone命令进行拉取。比如你想要获取我们这个教程的repo,可以通过下面这个命令。git clone git@githu

2020-10-01 09:17:54 2048

原创 这道题codeforces的简单题差点做了我一下午,你能解出来吗?

大家好,今天周末算法专题选的问题是codeforces contest1400中的B题,RPG Protagonist,翻译过来就是RPG游戏当中主人公。看起来这个标题就很唬人,其实这也是codeforces的题目风格。这道题的链接是:https://codeforces.com/contest/1400/problem/B按照道理来说div2比赛当中的B题都不难,大概和LeetCode当中的Easy差不多,有时候要简单一些,有时候要难一些。一般来说属于大部分人都能做出来的题。但今天选的这道题有一点意外

2020-09-30 10:22:10 738

原创 如何渡过小白期,不再当菜鸟程序员?

周末闲来无事,和大家随便聊聊。本来想写的题目是如何成为一个优秀的程序员,后来想想,我自己也未必能算得上。所以还是谦虚一点,就把题目改了。我这次不写那些方法论或者是感受的东西,这些可能大家get不到,也未必喜欢。这次写一点实际的,只要照着做,基本上不会被认为是个菜鸟,在职场当中也不会踩雷。相信小习惯的力量菜鸟和大牛的区别除了写代码、debug的核心能力差距之外,另外一个很大的差别就是在习惯上。大牛经过摸爬滚打练出了一系列优良的习惯,而菜鸟好习惯还没养成,坏习惯有了一堆。所以身为菜鸟的时候一定要有规范和习

2020-09-29 10:09:49 333 1

原创 全世界最强的算法平台codeforces究竟有什么魅力?

大家好,之前说过由于和LeetCode结了梁子,所以周末的LeetCode专题取消了,给大家写点其他专题的算法问题。目前选择的是国外著名的编程竞赛平台——codeforces。它在竞赛圈名气比较大,对于普通大学生而言可能了解不多。所以今天这篇文章简单和大家介绍一下codeforces这个网站,以及它的使用方法。链接:codeforces.comcodeforces简介简单介绍一下codeforces这个网站,codeforces位于宇宙编程最强的毛国。据说最早是由俄罗斯的一群大学生维护的,它最大的特点

2020-09-28 08:39:59 18975 1

原创 设计模式第二篇,链式方法模式

大家好,这是设计模式专题的第二篇文章,我们一起来聊聊链式方法的设计模式。链式方法也叫做流式方法,是一种相对比较新的概念,经常在流式计算或者类似的场景当中出现。举个例子,我们之前讲过的pyspark当中就用了这个模式,比如当我们处理rdd的时候,经过转换操作我们得到的仍然是一个rdd,直到遇到执行操作位置。dataframe也是一样的,我们转换阶段的操作我们可以连在一起写。我们来看一个例子:df.select("xx", "yy").withColumn("id", monotonically_incr

2020-09-25 11:32:07 368

原创 matplotlib设置颜色、标记、线条,让你的图像更加丰富

今天是数据处理专题的第11篇文章,我们继续来介绍matplotlib这个包的使用方法。在上一篇文章当中我们介绍了matplotlib当中subplot的概念以及用法,今天我们将会来介绍matplotlib绘图中的一些具体的设置,可以让我们画出来的图像更加丰富,表现力也更强。颜色我们之前绘制的图像都是蓝色的,这也是matplotlib的默认颜色。我们可以使用color这个参数来设置图像的颜色,比如我们想要画原谅色的图,我们就传入color=‘green’,这样我们得到的图像就是绿色了。由于绿色是很常

2020-09-24 10:16:58 4248

原创 20行代码实现,使用Tarjan算法求解强连通分量

今天是算法数据结构专题的第36篇文章,我们一起来继续聊聊强连通分量分解的算法。在上一篇文章当中我们分享了强连通分量分解的一个经典算法Kosaraju算法,它的核心原理是通过将图翻转,以及两次递归来实现。今天介绍的算法名叫Tarjan,同样是一个很奇怪的名字,奇怪就对了,这也是以人名命名的。和Kosaraju算法比起来,它除了名字更好记之外,另外一个优点是它只需要一次递归,虽然算法的复杂度是一样的,但是常数要小一些。它的知名度也更高,在竞赛当中经常出现。先给大家提个醒,相比于Kosaraju算法,Tarj

2020-09-23 10:07:57 281

原创 深入理解SVM,详解SMO算法

今天是机器学习专题第35篇文章,我们继续SVM模型的原理,今天我们来讲解的是SMO算法。公式回顾在之前的文章当中我们对硬间隔以及软间隔问题都进行了分析和公式推导,我们发现软间隔和硬间隔的形式非常接近,只有少数几个参数不同。所以我们着重来看看软间隔的处理。通过拉格朗日乘子法以及对原问题的对偶问题进行求解,我们得到了二次规划:它应该满足的KTT条件如下:也就是说我们要在这些条件下去求解(1)式的极值,在这个约束的情况下,虽然我们已经把式子化简成了只有一种参数α\alphaα,但这个极值又应该怎么求

2020-09-22 11:10:14 823

原创 手把手教你配置git和git仓库

今天是git专题的第二篇,我们来介绍一下git的基本配置,以及建立一个git仓库的基本方法。首先申明一点,本文不会介绍git的安装。一方面是大部分个人PC的系统当中都是已经装好了git的,另外一方面是git安装的教程和内容网上太多了,大同小异,所以这部分我们就略过了。如果你打开命令行输入git提示报错的话,那么可以百度一下你对应系统的git安装方法。git配置git常用的配置内容不多,一般来说最常用的就只有两个。一个是user相关的配置,一个是alias相关的配置。下面就来详细说说,首先讲讲user的

2020-09-21 09:17:50 426

原创 设计模式 | Catalog设计模式,抵御业务方需求变动

大家好,这是一个全新的专题——设计模式。其实可以选择的专题还有好几个,为什么选择设计模式呢?原因也很简单,首先是设计模式简单、易学。干货的文章固然好,但是普适性往往不强。另外一个很重要的点就是设计模式学习的好处非常明显,如果学得好的话,会觉得自己的编码能力有了质的突破。这并不是夸大其词,很多人包括我,在学习的时候都曾经有过这种感觉。设计模式简介设计模式这个词我想大家应该都听说过,但是它究竟是什么意思可能很多人并不清楚。其实设计模式就是一种经验,就是一种前人总结出来反复印证过可以解决各种问题或者是做出各

2020-09-18 10:02:42 259

原创 matplotlib | Python强大的作图工具,让你从此驾驭图表(二)

今天是数据处理专题的第10篇文章,我们继续来聊聊matplot这个工具库。在上周的文章当中我们介绍了matplot的基本用法,以及展示了一些简单的例子,让大家直观地了解这个工具包。我们可以简单地将它理解成专门用来作图的工具,但是它作图的功能又非常强大,以至于并不能当成一个简单的内容来对待。道理也很简单,老板让你去做一份数据出来,结果你画出来的图啥也没有,也不知道什么颜色代表什么内容,也没有标题,难以阅读,显然这是不行的。所以我们还需要深入学习它的一些高级用法, 让我们做出来的图更加的直观,展示更多的信息

2020-09-17 09:21:05 339

原创 算法数据结构 | 三个步骤完成强连通分量分解的Kosaraju算法

今天是算法数据结构专题的第35篇文章,我们来聊聊图论当中的强连通分量分解的Tarjan算法。Kosaraju算法一看这个名字很奇怪就可以猜到它也是一个根据人名起的算法,它的发明人是S. Rao Kosaraju,这是一个在图论当中非常著名的算法,可以用来拆分有向图当中的强连通分量。背景知识这里有两个关键词,一个是有向图,另外一个是强连通分量。有向图是它的使用范围,我们只能使用在有向图当中。对于无向图其实也存在强连通分量这个概念,但由于无向图的连通性非常强,只需要用一个集合维护就可以知道连通的情况,所以

2020-09-16 10:15:47 498

原创 Git | Git入门,成为项目管理大师(一)

大家好,周一我们迎来了一个新的专题——git。写这个专题的初衷有两点,第一点是觉得好像很少有公众号提到git相关的技术,可能是觉得太基础了看不上。但实际上git非常重要,在我们实际的开发工作当中使用的频率也非常非常高。第二点是不少人git用的并不好,连同之前的我在内。而且用得不好也就算了,还意识不到它的重要性,所以就身体力行给大家开了这个专题,表达我的态度——git非常重要,不可以轻视。Git历史首先提一下git的来源,git的作者是大名鼎鼎的Linus。有可能你没有听说过它,但是你一定听说过他的作品

2020-09-15 10:59:59 173

原创 Go语言 | 并发设计中的同步锁与waitgroup用法

今天是golang专题的第16篇文章,我们一起来聊聊golang当中的并发相关的一些使用。虽然关于goroutine以及channel我们都已经介绍完了,但是关于并发的机制仍然没有介绍结束。只有goroutine以及channel有时候还是不足以完成我们的问题,比如多个goroutine同时访问一个变量的时候,我们怎么保证这些goroutine之间不会互相冲突或者是影响呢?这可能就需要我们对资源进行加锁或者是采取其他的操作了。同步锁golang当中提供了两种常用的锁,一种是sync.Mutex另外一种

2020-09-14 09:19:48 461

原创 matplotlib | Python强大的作图工具,让你从此驾驭图表

今天是数据处理专题的第9篇文章,在之前的8篇文章当中我们已经介绍完了pandas这个库的一些基本用法,我们先把一些冷门的高级用法放一放,先来给大家介绍一下另外一个很有用的数据分析库——matplotlib。matplotlib简介如果你在大学里参加过数学建模竞赛或者是用过MATLAB的话,相比会对这一款软件中的画图功能印象深刻。MATLAB可以做出各种函数以及数值分布图像非常的好用和方便。如果你没用过呢也没关系,知道这么回事就好了。MATLAB虽然好用,但毕竟是收费软件,而且相比于MATLAB,很多人更

2020-09-11 10:35:17 450

原创 10行实现最短路算法——Dijkstra

今天是算法数据结构专题的第34篇文章,我们来继续聊聊最短路算法。在上一篇文章当中我们讲解了bellman-ford算法和spfa算法,其中spfa算法是我个人比较常用的算法,比赛当中几乎没有用过其他的最短路算法。但是spfa也是有缺点的,我们之前说过它的复杂度是O(kE)O(kE)O(kE),这里的E是边的数量。但有的时候边的数量很多,E最多能够达到V2V^2V2,这会导致超时,所以我们会更换其他的算法。这里说的其他的算法就是Dijkstra。算法思想在上一篇文章当中我们曾经说过Bellman-for

2020-09-10 10:24:05 170

原创 机器学习,详解SVM软间隔与对偶问题

今天是机器学习专题的第34篇文章,我们继续来聊聊SVM模型。我们在上一篇文章当中推导了SVM模型在硬间隔的原理以及公式,最后我们消去了所有的变量,只剩下了α\alphaα。在硬间隔模型当中,样本是线性可分的,也就是说-1和1的类别可以找到一个平面将它完美分开。但是在实际当中,这样的情况几乎是不存在的。道理也很简单,完美是不存在的,总有些样本会出错。那针对这样的问题我们应该怎么解决呢?软间隔在上文当中我们说了,在实际的场景当中,数据不可能是百分百线性可分的,即使真的能硬生生地找到这样的一个分隔平面区分

2020-09-09 10:58:16 2120

原创 Python | 使用argparse解析命令行参数

今天是Python专题第27篇文章,我们来聊聊Python当中的命令行参数工具argparse。命令行参数工具是我们非常常用的工具,比如当我们做实验希望调节参数的时候,如果参数都是通过硬编码写在代码当中的话,我们每次修改参数都需要修改对应的代码和逻辑显然这不太方便。比较好的办法就是把必要的参数设置成通过命令行传入的形式,这样我们只需要在运行的时候修改参数就可以了。sys.argv解析命令行传入参数最简单的办法就是通过sys.argv,sys.argv可以获取到我们通过命令行传入的参数。import

2020-09-08 11:29:51 1755 1

原创 Go语言 | goroutine不只有基础的用法,还有这些你不知道的操作

今天是golang专题第15篇文章,我们来继续聊聊channel的使用。在我们的上篇文章当中我们简单介绍了golang当中channel的使用方法,channel是golang当中一个非常重要的设计,可以理解为生产消费者模式当中的队列。但channel和队列不一样的是,golang当中集成了一些其他的用法,使得我们的使用更加灵活,开发并发相关的功能更加简单。select机制我们来思考一个问题,假设我们的数据源有多个,也就是说我们可能会从多个入口获取数据,但是我们并不知道这些数据源当中哪个先把数据准备好

2020-09-07 10:56:00 211

原创 Pandas | Dataframe的merge操作,像数据库一样尽情join

今天是pandas数据处理第8篇文章,我们一起来聊聊dataframe的合并。常见的数据合并操作主要有两种,第一种是我们新生成了新的特征,想要把它和旧的特征合并在一起。第二种是我们新获取了一份数据集,想要扩充旧的数据集。这两种合并操作在我们日常的工作当中非常寻常,那么究竟应该怎么操作呢?让我们一个一个来看。merge首先我们来看dataframe当中的merge操作,merge操作类似于数据库当中两张表的join,可以通过一个或者多个key将多个dataframe链接起来。我们首先来创建两个data

2020-09-05 16:46:31 478

空空如也

空空如也

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

TA关注的人

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