在家里电脑赚钱的电脑wwW277gan登陆不上去这站了,具体是什么情况导致的277gancOm邓不上

&figure&&img src=&https://pic3.zhimg.com/v2-e2fde3d1e849f77a2d350_b.jpg& data-rawwidth=&3342& data-rawheight=&1906& class=&origin_image zh-lightbox-thumb& width=&3342& data-original=&https://pic3.zhimg.com/v2-e2fde3d1e849f77a2d350_r.jpg&&&/figure&&p&写一篇短文,简要整理一下最近写文章中用到的提高生产效率的一些工具,以作备忘并同时推荐给大家。本文有可能会不定期更新。&/p&&p&&b&Update: 一觉醒来发现上热搜了。再一看发现收藏是点赞的三倍多(笑哭)。还是非常希望大家能在收藏的同时也点个赞的,可以让文章更好的分享给更多人看到~ 如果你有觉得很棒的工具本文没有覆盖到,欢迎评论补充。祝各位科研顺利。&/b&&/p&&p&以下工具有些是写英文文章通用的(包括邮件等)、有些则更偏向 CS 论文,大家自行取用~&/p&&blockquote&TO-DOs: 好用的跨平台文献管理应用(一大痛点,手写 bibtex 维护起来太头疼)&/blockquote&&hr&&h2&Linggle&/h2&&a href=&http://link.zhihu.com/?target=http%3A//linggle.com/& data-draft-node=&block& data-draft-type=&link-card& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Linggle 10^12- Language Reference Search Engines&/a&&p&这是一个可以查词组固定搭配的网站。可以使用形如&/p&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&present a method _
discuss ?about the issue
in/at the afternoon
&/code&&/pre&&/div&&p&等这样的 pattern 式查询,来查找有什么可以填的词/该不该填某个词/应该填哪个词等需求。&/p&&p&比如我想用「incapable」这个词,但是忘了后边应该加「to」还是「of」,再之后是加「do」还是「doing」,就可以输入&/p&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&incapable prep. _
&/code&&/pre&&/div&&p&查询,结果是&/p&&figure&&img src=&https://pic2.zhimg.com/v2-245dabfcfeb566d7c4f441_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1600& data-rawheight=&668& class=&origin_image zh-lightbox-thumb& width=&1600& data-original=&https://pic2.zhimg.com/v2-245dabfcfeb566d7c4f441_r.jpg&&&/figure&&p&这样就知道了应该用「incapable of doing」的形式。&/p&&p&Linggle 还有更复杂的用法,进入页面首页有详细的说明。&/p&&h2&Grammarly&/h2&&a href=&http://link.zhihu.com/?target=https%3A//www.grammarly.com/& data-draft-node=&block& data-draft-type=&link-card& data-image=&https://pic1.zhimg.com/v2-bb1f6fx120.jpg& data-image-width=&1200& data-image-height=&628& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Write your best with Grammarly.&/a&&p&一个可以纠正语法,提供同义词建议等的应用。有 Web 版和 Windows/Mac 客户端。&/p&&figure&&img src=&https://pic1.zhimg.com/v2-e2fde3d1e849f77a2d350_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&3342& data-rawheight=&1906& class=&origin_image zh-lightbox-thumb& width=&3342& data-original=&https://pic1.zhimg.com/v2-e2fde3d1e849f77a2d350_r.jpg&&&/figure&&p&大概长这个样子。有基础版和付费版,后者能给出一些更高级些的修改建议。&/p&&p&试用过之后感觉确实是有点用的,就直接购买了一年期。还有一些附加的统计功能,还没有完全探索明白。总之这个应用配上前一个 Linggle,对我这样英语较差的同学来说很有帮助了。&/p&&h2&Snappy/Snipaste&/h2&&a href=&http://link.zhihu.com/?target=http%3A//snappy-app.com/& data-draft-node=&block& data-draft-type=&link-card& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Snapshots, the smart way.&/a&&a href=&http://link.zhihu.com/?target=https%3A//www.snipaste.com/& data-draft-node=&block& data-draft-type=&link-card& data-image=&https://pic4.zhimg.com/v2-9d5a2d0b47b1b0d7beb793_180x120.jpg& data-image-width=&800& data-image-height=&607& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Snipaste&/a&&p&非常非常非常好用的截屏软件。前者是 Mac 应用,后者是 Windows 的类似版。Update: 忘记提了,Snipaste 也有 Mac 版,Mac 用户可以两个都用一用挑选自己更喜欢的~&/p&&p&最基础的功能是截图并悬浮 pin 在屏幕上。大概形如&/p&&figure&&img src=&https://pic3.zhimg.com/v2-811edf1c9636cbe6012f6bede21a73ae_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&3312& data-rawheight=&1702& class=&origin_image zh-lightbox-thumb& width=&3312& data-original=&https://pic3.zhimg.com/v2-811edf1c9636cbe6012f6bede21a73ae_r.jpg&&&/figure&&p&不管是 Mac 还是 Windows 原生的截图应用都没法解决悬浮的痛点。写论文的时候很多情况下都要同时参考许多文献或代码,如果是用笔记本且没有外接显示屏的话,同时查看数个文件是非常痛苦的,总是要切来切去。而这两个应用可以让你轻松的把每一个需要参考的小片段保留下来,在屏幕上悬浮置顶,并可以随意调整位置和大小。这时候再切到 LaTeX 界面书写就非常方便了。&/p&&p&他们还提供了更多的一些涂鸦、分享等功能,也很实用,不过多展开。&/p&&h2&Semantic Scholar&/h2&&a href=&http://link.zhihu.com/?target=https%3A//www.semanticscholar.org/& data-draft-node=&block& data-draft-type=&link-card& data-image=&https://pic4.zhimg.com/v2-a63cef7a81dccc608118ccbc22e524cf_180x120.jpg& data-image-width=&1200& data-image-height=&630& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Semantic Scholar - An academic search engine for scientific articles&/a&&p&CS 领域用这个查 paper 感觉比 Google Scholar 效率高一些。Citation 的展开功能对写 related work 章节的时候蛮有帮助。&/p&&h2&LaTeX handwritten&/h2&&a href=&http://link.zhihu.com/?target=http%3A//detexify.kirelabs.org/classify.html& data-draft-node=&block& data-draft-type=&link-card& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Detexify LaTeX handwritten symbol recognition&/a&&p&一个可以手写数学符号识别 LaTeX expression 的小工具。&/p&&h2&Overleaf&/h2&&a href=&http://link.zhihu.com/?target=https%3A//www.overleaf.com/& data-draft-node=&block& data-draft-type=&link-card& data-image=&https://pic3.zhimg.com/v2-d2deb012d0a49c915542_ipico.jpg& data-image-width=&256& data-image-height=&256& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://www.&/span&&span class=&visible&&overleaf.com/&/span&&span class=&invisible&&&/span&&/a&&p&可多人在线协作的 LaTeX 编写平台。&/p&&p&自己一个人用的时候还是更习惯 TexStudio(虽然也有很多不足)。但是多人协作这个问题确实是离线 IDE 不太好办的。LaTeX 源码又不太好用 git 管理(大段文本 git diff 的默认算法识别结果简直是渣)。不过 Overleaf 的在线协作效果和功能感觉还是远不如 Google Docs。然而 Google Docs 却没有 LaTeX 功能。&/p&&p&说实话我一直没找到一个心目中接近『完美』的 LaTeX IDE。现在天天念叨着要是 JetBrains 出一个就好了……&/p&&h2&Keynote/Visio/&a href=&http://link.zhihu.com/?target=http%3A//Draw.io& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&Draw.io&/span&&span class=&invisible&&&/span&&/a&&/h2&&p&用来画论文插图的一些应用。&/p&&p&简单的图其实 Keynote/PPT 就真的足够了,认真的。&/p&&p&Visio 符合田厂软件的一贯特点,功能强大而臃肿,使用繁琐。这次 paper 里最复杂的图是用 Visio 画的,效果确实很棒,然而过程实在难用到无法忍受。&/p&&p&&a href=&http://link.zhihu.com/?target=http%3A//draw.io/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&draw.io&/a& 似乎是另一个可选的解决方案,没有实际用过,看颜值还不错。未来会尝试。&/p&&h2&Excel2LaTeX&/h2&&a href=&http://link.zhihu.com/?target=https%3A//ctan.org/tex-archive/support/excel2latex& data-draft-node=&block& data-draft-type=&link-card& data-image=&https://pic4.zhimg.com/v2-5ec748b8cefe36747cfca88ed9d257b3_ipico.jpg& data-image-width=&439& data-image-height=&375& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&/tex-archive/support/excel2latex&/a&&p&把 Excel 表格转换成 LaTeX 代码的工具。可以节省很多时间。有些效果不能完美转换,需要微调。&/p&
写一篇短文,简要整理一下最近写文章中用到的提高生产效率的一些工具,以作备忘并同时推荐给大家。本文有可能会不定期更新。Update: 一觉醒来发现上热搜了。再一看发现收藏是点赞的三倍多(笑哭)。还是非常希望大家能在收藏的同时也点个赞的,可以让文章更…
&figure&&img src=&https://pic3.zhimg.com/v2-6ecf3fba47aebaf703dc28_b.jpg& data-rawwidth=&1920& data-rawheight=&1200& class=&origin_image zh-lightbox-thumb& width=&1920& data-original=&https://pic3.zhimg.com/v2-6ecf3fba47aebaf703dc28_r.jpg&&&/figure&&h2&更新啦!
1:29AM&/h2&&p&一些同学想让我写一篇arp攻击的文章,做了点功课,先对编程工具写了一篇介绍,供大家参考:&/p&&p&&a href=&https://zhuanlan.zhihu.com/p/& class=&internal&&DeepWeaver:通过摆弄python scapy模块 了解网络模型--Get your hands dirty!&/a&&/p&&p&后续会通过介绍的这几种方法试着写一个arp欺骗的程序,大家的点赞是我继续写下去的动力!&/p&&p&3-24晚&/p&&p&当当当当&/p&&p&&a href=&https://zhuanlan.zhihu.com/p/& class=&internal&&室友不敢深夜打游戏篇二:如何用python-scapy进行arp欺骗&/a&&/p&&hr&&h2&原文:&/h2&&p&相信很多好好学习天天睡觉的宝宝,经常会有这样的苦恼:凌晨两点,隔壁床游戏打得正酣,机械键盘啪啪的响,嘴里不时吼道“又捡到一个二级头。我x这货开挂了吧,举报举报。。。”你心里可能恨恨地想着:捡你个头,举报你个头,我特么才要举报你呢,大晚上的不睡觉,...(此处省去30字脏话)。好吧,总之,你可能想过,我要是有个办法能让他或她断网就好了......&/p&&p&今天在学习ICMP协议(Internet Control Message Protocol)的时候,做到了一道题,问ping命令可以用来做什么↓&/p&&p&&br&&/p&&p&&br&&/p&&p&&br&&/p&&figure&&img src=&https://pic2.zhimg.com/v2-58a34c64eb4be8e23d7e_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&700& data-rawheight=&348& class=&origin_image zh-lightbox-thumb& width=&700& data-original=&https://pic2.zhimg.com/v2-58a34c64eb4be8e23d7e_r.jpg&&&/figure&&blockquote&其中第三个选项说: ping can be maliciously used as a way to attack a machine by flooding it with ping requests.&br&通过大量的ping请求,ping可以被恶意地用作一种攻击方式。&/blockquote&&p&做完这道题的时候,我虎躯一震,抖擞起了原本因为晚上没睡好而萎靡的精神。对啊,如果我死命的ping对方,对方是不是就上不了网了?即使能让对方的网络变卡也行。&br&其实这是一种网络攻击方式,它有种酷酷的名称,叫“死亡之ping”, 英文为&ping flooding&(像洪水一样ping对方,直到对方淹死在你的icmp里)&/p&&ul&&li&什么是ICMP&/li&&/ul&&p&要了解什么是ping flooding,我们先要了解ping是什么,要了解ping,则首先要了解什么是ICMP。&/p&&blockquote&提起ICMP,一些人可能会感到陌生,实际上,ICMP与我们息息相关。在网络体系结构的各层次中,都需要控制,而不同的层次有不同的分工和控制内容,IP层的控制功能是最复杂的,主要负责差错控制、拥塞控制等,任何控制都是建立在信息的基础之上的,在基于IP数据报的网络体系中,网关必须自己处理数据报的传输工作,而IP协议自身没有内在机制来获取差错信息并处理。为了处理这些错误,TCP/IP设计了ICMP协议,当某个网关发现传输错误时,立即向信源主机发送ICMP报文,报告出错信息,让信源主机采取相应处理措施,它是一种差错和控制报文协议,不仅用于传输差错报文,还传输控制报文。 ------摘自网络&/blockquote&&p&总之,简单来说,icmp首先可以用于所谓的“差错报文”,就是发送出问题时对方回复你“这里出问题了,没送到!”,比如下表:没到达应到的网络--&icmp报错;包在网络中迷路过期了--&icmp错误。第二则用于“控制报文”,比如我们总说某个网络能不能ping通,那么我们实际是看,我们给某个ip发一个icmp(echo request),看它会不会回复我们一个icmp(echo reply),回复了就意味着网络是通的,没回复就是哪里出问题了。&/p&&figure&&img src=&https://pic1.zhimg.com/v2-e69b4dbd0ec9a04aa5fee7e_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&700& data-rawheight=&282& class=&origin_image zh-lightbox-thumb& width=&700& data-original=&https://pic1.zhimg.com/v2-e69b4dbd0ec9a04aa5fee7e_r.jpg&&&/figure&&ul&&li&ICMP是如何工作的&/li&&/ul&&p&&br&&/p&&figure&&img src=&https://pic4.zhimg.com/v2-bdc5f287ca5bdff28ab3ba_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&700& data-rawheight=&263& class=&origin_image zh-lightbox-thumb& width=&700& data-original=&https://pic4.zhimg.com/v2-bdc5f287ca5bdff28ab3ba_r.jpg&&&/figure&&p&&br&&/p&&p&假如小明是路由(router),你给小红(host)写了份情书(ip packet),但是不晓得怎么被小明捡到了,不知所措的小明心想肯定是邮递员弄错了吧,他很好心的想把信件送还给你,但是由于你对小红实在情深意切,写的东西太多,而小明只想告诉你发送失败了,再发一次,而没必要告诉你,你自己究竟写的是什么鬼话,于是他把你的信封保留了(ip头部),还把你的信撕得只留下八个字节(让你知道哦原来是我写的千万封情书中的哪一封),然后,小明在你的旧信封上套了个ICMP牌子的大信封,还在大信封里写了张纸条,这是什么类型什么编码的icmp(见上图type,code栏),署名发信地为小明的ip,收件人为你的ip。&/p&&ul&&li&ping是如何工作的&/li&&/ul&&figure&&img src=&https://pic4.zhimg.com/v2-f514dd7d1401dcbb857ec11db735502f_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&692& data-rawheight=&482& class=&origin_image zh-lightbox-thumb& width=&692& data-original=&https://pic4.zhimg.com/v2-f514dd7d1401dcbb857ec11db735502f_r.jpg&&&/figure&&p&&br&&/p&&p&有一天,你惹小红生气了,她一连好几天好几天不理你,于是你想写封信问候一下她,但是又怕说错话惹得她更加生气,于是你写了封简短的icmp,标号8、0代表这是用于&echo request&,只是想看看小红在家不,并不想打扰到她。小红家的管家接到了你的信,啥也没说,把一封”echo replay&的icmp回信发还给了你。于是你就知道小红好着呢!只是不想理你~&/p&&ul&&li&死亡之ping&/li&&/ul&&p&言归正传,我们来看看用什么方法可以让舍友断子绝孙,哦不,不能上网!&br&打开电脑的终端。通过 &code&man ping&/code& 命令,我们可以看到ping命令的详细使用方法,其中&code&-s&/code&可以指定发送包的大小,&code&-i&/code&指定发送的包的频率,这两个正是我们想要的,因为首先我们需要发送足够大的数据包从而能撑爆对方的带宽,其次每秒ping一次可不够,我们最好要每秒ping他个上千次,这样才更有可能阻塞对方的网络。&/p&&p&&br&&/p&&figure&&img src=&https://pic3.zhimg.com/v2-fcdfb18e58d41f54d0a7ac2_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&700& data-rawheight=&41& class=&origin_image zh-lightbox-thumb& width=&700& data-original=&https://pic3.zhimg.com/v2-fcdfb18e58d41f54d0a7ac2_r.jpg&&&/figure&&p&如果不指明,默认发送64字节ICMP数据以及8字节的icmp头部&/p&&figure&&img src=&https://pic4.zhimg.com/v2-b333ca6e612eed304bf3ea_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&700& data-rawheight=&62& class=&origin_image zh-lightbox-thumb& width=&700& data-original=&https://pic4.zhimg.com/v2-b333ca6e612eed304bf3ea_r.jpg&&&/figure&&p&&br&&/p&&p&注意间隔如果低于0.2秒一次需要超级用户权限,所以我们最后需要sudo+命令&/p&&blockquote&另外,以上的方法只使用linux或者mac系统,windows据说是这么写的&code&ping -l 65500 -t ip地址&/code&&/blockquote&&p&好吧,重点来了,首先躺枪的是我的手机。&/p&&blockquote&这里提醒一下,这种方法有效的前提是你们都在一个局域网下,比如你们连的都是校网。&/blockquote&&p&&br&&/p&&p&&br&&/p&&figure&&img src=&https://pic4.zhimg.com/v2-2b98e3e8e1f63e36f1093e_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&700& data-rawheight=&394& class=&origin_image zh-lightbox-thumb& width=&700& data-original=&https://pic4.zhimg.com/v2-2b98e3e8e1f63e36f1093e_r.jpg&&&/figure&&p&&br&&/p&&p&查看我手机的内网ip,这里我用的是termux软件&/p&&p&然后在你的电脑上输入&code&sudo ping ***.***.***.*** -i 0.01 -s 65500&/code& ,这个意思就是说,每0.01秒给我的手机发送一个大小65500字节的icmp包。然后按回车:&/p&&figure&&img src=&https://pic2.zhimg.com/v2-375bdbb19ded01bf9755d_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&700& data-rawheight=&184& class=&origin_image zh-lightbox-thumb& width=&700& data-original=&https://pic2.zhimg.com/v2-375bdbb19ded01bf9755d_r.jpg&&&/figure&&p&于是可以看到,我手机的流量蹭蹭蹭的涨上去了,等十秒以后,我就连不上百度了。。。&/p&&figure&&img src=&https://pic2.zhimg.com/v2-5a24eac964ee24f1a2449ca1bacd9924_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&700& data-rawheight=&186& class=&origin_image zh-lightbox-thumb& width=&700& data-original=&https://pic2.zhimg.com/v2-5a24eac964ee24f1a2449ca1bacd9924_r.jpg&&&/figure&&p&按ctrl+c停止攻击后,手机再次恢复了平静&/p&&h2&后记:&/h2&&p&当然,这种攻击方法还有很多新花样,比如仿造对方ip发送,让局域网下的电脑都收到对方的ping request,从而让整个局域网ping reply对方的电脑,或者动动脑子在内网搞个大闹天宫,我点到为止。&/p&&p&同样,除了icmp攻击,类似的攻击方法还有udp攻击,tcp攻击。本人菜鸟,具体是不是叫这个名儿我不知道瞎说的别信。&/p&&p&我一直觉得,学习计算机和学习魔法有非常多的相似之处。在霍格沃兹,学生学习一系列的咒语来召唤出潜藏在魔杖中的魔力,而我们,学习一系列的编码,代码(code)来召唤出计算机中的算力,从而为我们所用,造福人类,to make the world a better place是所有程序员的信条。所以,当你学了更多的知识,当你有了更强大的魔力以后,不要试图去做伏地魔,就像谷歌喊出的口号-------don't be evil!(不作恶!)&/p&
1:29AM一些同学想让我写一篇arp攻击的文章,做了点功课,先对编程工具写了一篇介绍,供大家参考:后续会通过介绍的这几种方法试着写一个arp欺骗的程序,大家…
&p&怎么没人说&b&Google Public Data Explorer&/b&&/p&&p&(谷歌公开数据浏览工具)&/p&&p&&a href=&//link.zhihu.com/?target=https%3A//www.google.com/publicdata/& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://www.&/span&&span class=&visible&&google.com/publicdata/&/span&&span class=&invisible&&&/span&&/a&
数据项目很多,功能超多超方便&/p&&p&接几个图吧:&/p&&figure&&img src=&https://pic1.zhimg.com/80ccdb87b636c_b.jpg& data-rawwidth=&2211& data-rawheight=&1379& class=&origin_image zh-lightbox-thumb& width=&2211& data-original=&https://pic1.zhimg.com/80ccdb87b636c_r.jpg&&&/figure&&figure&&img src=&https://pic3.zhimg.com/89a04ec529a548f09e2c8a_b.jpg& data-rawwidth=&2232& data-rawheight=&1331& class=&origin_image zh-lightbox-thumb& width=&2232& data-original=&https://pic3.zhimg.com/89a04ec529a548f09e2c8a_r.jpg&&&/figure&&figure&&img src=&https://pic4.zhimg.com/e9ce7d13cfed8ffe8cd2f27_b.jpg& data-rawwidth=&2223& data-rawheight=&1336& class=&origin_image zh-lightbox-thumb& width=&2223& data-original=&https://pic4.zhimg.com/e9ce7d13cfed8ffe8cd2f27_r.jpg&&&/figure&&br&&p&---&/p&&p&另外推荐两个工具&/p&&p&Kaggle的数据资源:&a href=&//link.zhihu.com/?target=https%3A//www.kaggle.com/datasets& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Datasets | Kaggle&/a&&/p&&figure&&img src=&https://pic2.zhimg.com/ebf059b2a2e41fa7c23b41_b.jpg& data-rawwidth=&1742& data-rawheight=&1032& class=&origin_image zh-lightbox-thumb& width=&1742& data-original=&https://pic2.zhimg.com/ebf059b2a2e41fa7c23b41_r.jpg&&&/figure&&br&&p&还有一个小工具今天才发现:&a href=&//link.zhihu.com/?target=https%3A//www.gapminder.org/downloads/income-distribution-2003/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Income Distribution, 2003&/a&&/p&&figure&&img src=&https://pic4.zhimg.com/c7adc81bf3ba99d99f2b3_b.jpg& data-rawwidth=&1457& data-rawheight=&1030& class=&origin_image zh-lightbox-thumb& width=&1457& data-original=&https://pic4.zhimg.com/c7adc81bf3ba99d99f2b3_r.jpg&&&/figure&&br&&br&&p&---&/p&&p&补充: Internet Archive Wayback Machine (&a href=&//link.zhihu.com/?target=http%3A//archive.org/web/& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&archive.org/web/&/span&&span class=&invisible&&&/span&&/a&)&/p&&p&能搜索很多早就被删除的网页。&/p&&br&&br&&p& ------新开公众号分割线----- &/p&&br&&figure&&img src=&https://pic2.zhimg.com/v2-705dc1ac21_b.jpg& data-rawwidth=&1024& data-rawheight=&768& class=&origin_image zh-lightbox-thumb& width=&1024& data-original=&https://pic2.zhimg.com/v2-705dc1ac21_r.jpg&&&/figure&
怎么没人说Google Public Data Explorer(谷歌公开数据浏览工具)
数据项目很多,功能超多超方便接几个图吧: ---另外推荐两个工具Kaggle的数据资源: 还有一个小工具今天才发现:
&h2&&a href=&http://link.zhihu.com/?target=https%3A//docs.microsoft.com/zh-cn/azure/machine-learning/studio/algorithm-choice& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&如何选择机器学习算法&/a&&/h2&&h2&&a href=&http://link.zhihu.com/?target=http%3A//blog.csdn.net/u/article/details/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&30分钟学会用scikit-learn的基本分类方法(决策树、SVM、KNN)和集成方法(随机森林,Adaboost和GBRT) - CSDN博客&/a&&/h2&&h2&&a href=&http://link.zhihu.com/?target=http%3A//blog.csdn.net/u/article/details/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&30分钟学会用scikit-learn的基本回归方法(线性、决策树、SVM、KNN)和集成方法(随机森林,Adaboost和GBRT) - CSDN博客&/a&&/h2&&h2&&b&&a href=&http://link.zhihu.com/?target=http%3A//www.sohu.com/a/7563& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&最全最实用的机器学习算法优缺点分析&/a&&/b&&/h2&&p&&a href=&http://link.zhihu.com/?target=http%3A//bbs.pinggu.org/thread--1.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&各种分类算法的优缺点 - 学习笔记1.0 - 经管之家(原人大经济论坛)&/a&&/p&&h2&&b&逻辑斯蒂回归分类器&/b&&/h2&&p&属于判别式模型,有很多正则化模型的方法(L0,L1,L2,etc),而且你不必像在用朴素贝叶斯那样担心你的特征是否相关。与决策树与SVM机相比,你还会得到一个不错的概率解释,你甚至可以轻松地利用新数据来更新模型(使用在线梯度下降算法,onlinegradientdescent)。如果你需要一个概率架构(比如,简单地调节分类阈值,指明不确定性,或者是要获得置信区间),或者你希望以后将更多的训练数据快速整合到模型中去,那么使用它吧。&/p&&h2&&b&优点:&/b&&/h2&&blockquote&实现简单,广泛的应用于工业问题上;&br&分类时计算量非常小,速度很快,存储资源低;&br&便利的观测样本概率分数;&br&对逻辑回归而言,多重共线性并不是问题,它可以结合L2正则化来解决该问题;&/blockquote&&h2&&b&&i&表现最好&/i&&/b&:当特征没有相关性,最终分类结果是线性的,且特征维度远小于数据量的时候效果好。&/h2&&h2&&b&缺点:&/b&&/h2&&blockquote&当特征空间很大时,逻辑回归的性能不是很好;&br&容易欠拟合,一般准确度不太高&br&不能很好地处理大量多类特征或变量;&br&只能处理两分类问题(在此基础上衍生出来的softmax可以用于多分类),且必须线性可分;&br&对于非线性特征,需要进行转换;&/blockquote&&h2&&b&&i&表现最差&/i&&/b&:当特征相关性比较强时,表现会很差。&/h2&&h2&&b&实例:&/b&&/h2&&p&&b&&a href=&http://link.zhihu.com/?target=http%3A//www.cnblogs.com/chenice/p/7202045.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&机器学习之良/恶性乳腺癌肿瘤预测&/a&&/b&&/p&&h2&&b&集锦:&/b&&/h2&&p&&a href=&https://zhuanlan.zhihu.com/p/& class=&internal&&机器学习算法集锦:从贝叶斯到深度学习及各自优缺点&/a&&/p&&h2&&b&朴素贝叶斯&/b&&/h2&&p&朴素贝叶斯属于生成式模型(关于生成模型和判别式模型,主要还是在于是否是要求联合分布),非常简单,你只是做了一堆计数。如果注有条件独立性假设(一个比较严格的条件),朴素贝叶斯分类器的收敛速度将快于判别模型,如逻辑回归,所以你只需要较少的训练数据即可。即使NB条件独立假设不成立,NB分类器在实践中仍然表现的很出色。它的主要缺点是它不能学习特征间的相互作用,用mRMR中R来讲,就是特征冗余。引用一个比较经典的例子,比如,虽然你喜欢BradPitt和TomCruise的电影,但是它不能学习出你不喜欢他们在一起演的电影。&/p&&h2&&b&优点:&/b&&/h2&&blockquote&朴素贝叶斯模型发源于古典数学理论,有着坚实的数学基础,以及稳定的分类效率。&br&对小规模的数据表现很好,能个处理多分类任务,适合增量式训练。&br&对缺失数据不太敏感,算法也比较简单,常用于文本分类。&/blockquote&&h2&&b&缺点:&/b&&/h2&&blockquote&需要计算先验概率;&br&分类决策存在错误率;&br&对输入数据的表达形式很敏感。&/blockquote&&h2&&b&线性回归&/b&&/h2&&p&  线性回归是用于回归的,而不像Logistic回归是用于分类,其基本思想是用梯度下降法对最小二乘法形式的误差函数进行优化,当然也可以用normalequation直接求得参数的解,结果为:&/p&&figure&&img src=&https://pic3.zhimg.com/v2-4aceca1ef157ce7717fe_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&770& data-rawheight=&140& class=&origin_image zh-lightbox-thumb& width=&770& data-original=&https://pic3.zhimg.com/v2-4aceca1ef157ce7717fe_r.jpg&&&/figure&&p&  由此可见LWLR与LR不同,LWLR是一个非参数模型,因为每次进行回归计算都要遍历训练样本至少一次。&/p&&h2&&b&优点:&/b&&/h2&&blockquote&实现简单,计算简单。&/blockquote&&h2&&b&缺点:&/b&&/h2&&blockquote&不能拟合非线性数据。&/blockquote&&h2&&b&最近领算法——KNN&/b&&/h2&&p&&b&KNN即最近邻算法,其主要过程为:&/b&&/p&&blockquote&1.计算训练样本和测试样本中每个样本点的距离(常见的距离度量有欧式距离,马氏距离等);&br&2.对上面所有的距离值进行排序;&br&3.选前k个最小距离的样本;&br&4.根据这k个样本的标签进行投票,得到最后的分类类别;&/blockquote&&p&如何选择一个最佳的K值,这取决于数据。一般情况下,在分类时较大的K值能够减小噪声的影响。但会使类别之间的界限变得模糊。一个较好的K值可通过各种启发式技术来获取,比如,交叉验证。另外噪声和非相关性特征向量的存在会使K近邻算法的准确性减小。&/p&&p&  近邻算法具有较强的一致性结果。随着数据趋于无限,算法保证错误率不会超过贝叶斯算法错误率的两倍。对于一些好的K值,K近邻保证错误率不会超过贝叶斯理论误差率。&/p&&h2&&b&KNN算法的优点&/b&&/h2&&blockquote&理论成熟,思想简单,既可以用来做分类也可以用来做回归;&br&可用于非线性分类;&br&训练时间复杂度为O(n);&br&对数据没有假设,准确度高,对outlier不敏感&/blockquote&&h2&&b&缺点&/b&&/h2&&blockquote&计算量大;&br&样本不平衡问题(即有些类别的样本数量很多,而其它样本的数量很少);&br&需要大量的内存;&/blockquote&&h2&&b&决策树&/b&&/h2&&p&  易于解释。它可以毫无压力地处理特征间的交互关系并且是非参数化的,因此你不必担心异常值或者数据是否线性可分(举个例子,决策树能轻松处理好类别A在某个特征维度x的末端,类别B在中间,然后类别A又出现在特征维度x前端的情况)。它的缺点之一就是不支持在线学习,于是在新样本到来后,决策树需要全部重建。另一个缺点就是容易出现过拟合,但这也就是诸如随机森林RF(或提升树boostedtree)之类的集成方法的切入点。另外,随机森林经常是很多分类问题的赢家(通常比支持向量机好上那么一丁点),它训练快速并且可调,同时你无须担心要像支持向量机那样调一大堆参数,所以在以前都一直很受欢迎。&/p&&p&决策树中很重要的一点就是选择一个属性进行分枝,因此要注意一下信息增益的计算公式,并深入理解它。&/p&&h2&&b&优点:&/b&&/h2&&blockquote&计算简单,易于理解,可解释性强;&br&比较适合处理有缺失属性的样本;&br&能够处理不相关的特征;&br&在相对短的时间内能够对大型数据源做出可行且效果良好的结果。&/blockquote&&h2&&b&缺点:&/b&&/h2&&blockquote&容易发生过拟合(随机森林可以很大程度上减少过拟合);&br&忽略了数据之间的相关性;&br&对于那些各类别样本数量不一致的数据,在决策树当中,信息增益的结果偏向于那些具有更多数值的特征(只要是使用了信息增益,都有这个缺点,如RF)。&/blockquote&&h2&&b&集成学习&/b&&/h2&&p&&a href=&http://link.zhihu.com/?target=http%3A//blog.csdn.net/a1b2c3d4123456/article/details/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&集成学习算法总结----Boosting和Bagging - CSDN博客&/a&&/p&&p&&a href=&http://link.zhihu.com/?target=http%3A//blog.csdn.net/taoyanqi8932/article/details/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Ensemble learning:Bagging,Random Forest,Boosting&/a&&/p&&p&&a href=&http://link.zhihu.com/?target=http%3A//www.sohu.com/a/8782& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&一文读懂集成学习(附学习资源)&/a&&/p&&p&&a href=&http://link.zhihu.com/?target=http%3A//blog.csdn.net/abcjennifer/article/details/8164315& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&统计学习方法--CART, Bagging, Random Forest, Boosting&/a&&/p&&h2&&b&随机森林有很多的优点:&/b&&/h2&&blockquote&a. 在数据集上表现良好,两个随机性的引入,使得随机森林不容易陷入过拟合。&br&b. 在当前的很多数据集上,相对其他算法有着很大的优势,两个随机性的引入,使得随机森林具有很好的抗噪声能力。&br&c. 它能够处理很高维度(feature很多)的数据,并且不用做特征选择,对数据集的适应能力强:既能处理离散型数据,也能处理连续型数据,数据集无需规范化。&br&d. 在创建随机森林的时候,对generlization error使用的是无偏估计。&br&e. 训练速度快,可以得到变量重要性排序。&br&f. 在训练过程中,能够检测到feature间的互相影响。&br&g 容易做成并行化方法。&br&h. 实现比较简单&/blockquote&&hr&&p&以下摘自 &a href=&http://link.zhihu.com/?target=http%3A//www.sohu.com/a/7563& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&最全最实用的机器学习算法优缺点分析&/a&&/p&&h2&&b&当前的「三大」最常见的机器学习任务:&/b&&/h2&&ul&&li&&b&回归(Regression)&/b&&/li&&li&&b&分类(Classification)&/b&&/li&&li&&b&聚类(Clustering)&/b&&/li&&/ul&&h2&&b&两大数据降维(Dimensionality Reduction)问题:&/b&&/h2&&ul&&li&&b&特征选取(Feature Selection)&/b&&/li&&li&&b&特征提取(Feature Extraction)&/b&&/li&&/ul&&h2&&b&1. 回归&/b&&/h2&&p&回归是一种用于连续型数值变量预测和建模的监督学习算法,使用案例包括房地产价格、股价走势或学生成绩等的预测。&/p&&p&回归任务的特征是具有数值型目标变量的标注数据集。换言之,每一个用以监督算法的观察样本,都有一个数值型真值。&/p&&p&&b&1.1 (正则化)线性回归&/b&&/p&&p&线性回归是回归任务最常用的算法。它最简的形式,是用一个连续的超平面来拟合数据集(比如,当你仅有两个变量时就用一条直线)。如果数据集内的变量存在线性关系,拟合程度就相当高。&/p&&p&在实践中,简单线性回归通常会被其正则化形式(LASSO、Ridge 及弹性网络)所取代。正则化是对过多回归系数所采取的一种避免过拟合的惩罚技巧,同时,惩罚的强度需要被平衡好。&/p&&ul&&li&&b&优点:&/b&线性回归的理解和解释都非常直观,还能通过正则化来避免过拟合。此外,线性模型很容易通过随机梯度下降来更新数据模型。&/li&&li&&b&缺点:&/b&线性回归在处理非线性关系时非常糟糕,在识别复杂的模式上也不够灵活,而添加正确的相互作用项或多项式又极为棘手且耗时。&/li&&li&&b&实现:&/b&&/li&&/ul&&blockquote&Python - &a href=&http://link.zhihu.com/?target=http%3A//scikit-learn.org/stable/modules/linear_model.html& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&scikit-learn.org/stable&/span&&span class=&invisible&&/modules/linear_model.html&/span&&span class=&ellipsis&&&/span&&/a&&br&R - &a href=&http://link.zhihu.com/?target=https%3A//cran.r-project.org/web/packages/glmnet/index.html& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&cran.r-project.org/web/&/span&&span class=&invisible&&packages/glmnet/index.html&/span&&span class=&ellipsis&&&/span&&/a&&/blockquote&&p&&b&1.2 回归树(集成方法)&/b&&/p&&p&回归树,又名决策树,通过将数据集重复分割成不同的分支来最大化每次分离的信息增益,从而让回归树很自然地学到非线性关系。&/p&&p&集成的方法,如随机森林(RF)或梯度提升树(GBM),则能结合许多独立训练树的预测。我们在这里不会详述其中的机制,但在实践中,随机森林一般都有很出色的表现,梯度提升树则较难调参,但往往能有更高的性能上限。&/p&&ul&&li&&b&优点:&/b&决策树能学习非线性关系,对异常值也具有很强的稳健性。集成学习在实践中表现优异,经常赢得经典的(非深度学习)机器学习竞赛。&/li&&li&&b&缺点:&/b&由于无约束,单棵树容易过拟合,这是因为单棵树可保留分支直至记住训练的数据。不够,集成方法可以弱化这一缺点。&/li&&li&&b&实现:&/b&随机森林&/li&&/ul&&p&&a href=&http://link.zhihu.com/?target=http%3A//scikit-learn.org/stable/modules/ensemble.html%23random-forests& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Python - http://scikit-learn.org/stable/modules/ensemble.html#random-forests&/a&&/p&&p&R - &a href=&http://link.zhihu.com/?target=https%3A//cran.r-project.org/web/packages/randomForest/index.html& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&cran.r-project.org/web/&/span&&span class=&invisible&&packages/randomForest/index.html&/span&&span class=&ellipsis&&&/span&&/a&&/p&&ul&&li&&b&实现:&/b&梯度提升树&/li&&/ul&&blockquote&Python - &a href=&http://link.zhihu.com/?target=http%3A//scikitlearn.org/stable/modules/ensemble.html%23classification& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&scikitlearn.org/stable/&/span&&span class=&invisible&&modules/ensemble.html#classification&/span&&span class=&ellipsis&&&/span&&/a&&br&R - &a href=&http://link.zhihu.com/?target=https%3A//cran.r-project.org/web/packages/gbm/index.html& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&cran.r-project.org/web/&/span&&span class=&invisible&&packages/gbm/index.html&/span&&span class=&ellipsis&&&/span&&/a&&/blockquote&&p&&b&1.3 深度学习&/b&&/p&&p&深度学习是指能够学习极端复杂模式的多层神经网络。它们在输入层和输出层之间使用隐藏层来对数据的中间表征建模,这一点是其他算法很难做到的。&/p&&p&深度学习还有几个重要的机制,如卷积、漏失等,这使该算法可以有效学习高维数据。然而,相对于其他算法,深度学习需要更多的数据来进行训练,因为该模型需要估算更大数量级的参数。&/p&&ul&&li&&b&优点:&/b&深度学习是当前特定领域的最先进技术,如计算机视觉与语音识别。深度神经网络在图像、音频和文本数据上表现优异,也很容易通过反向传播算法来更新数据模型。它们的架构(即层级的数量和结构)能适用于多种问题,同时隐藏层还能降低算法对特征工程的依赖。&/li&&li&&b&缺点:&/b&深度学习算法往往不适合用于通用目的,因为它们需要大量的数据。事实上,对于经典的机器学习问题,深度学习的表现并不比集成方法好。此外,由于训练所需的密集型计算,它们需要更多的专门知识才能进行调参(如设定架构与超参数)。&/li&&li&&b&实现:&/b&&/li&&/ul&&blockquote&Python - &a href=&http://link.zhihu.com/?target=https%3A//keras.io/& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&keras.io/&/span&&span class=&invisible&&&/span&&/a&&br&R - &a href=&http://link.zhihu.com/?target=http%3A//mxnet.io/& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&mxnet.io/&/span&&span class=&invisible&&&/span&&/a&&/blockquote&&p&&b&1.4 荣誉奖:最近邻算法&/b&&/p&&p&最近邻算法是“基于实例的”,也就意味着它需要保留每一个训练观察值。最近邻算法通过搜寻最相似的训练样本来预测新样本的观察值。&/p&&p&它是内存密集型算法,处理高维数据时的效果并不理想,同时还需要高效的距离函数来计算相似度。在实践中,使用正则化的回归或树型集成方法通常是更好的选择。&/p&&h2&&b&2. 分类&/b&&/h2&&p&分类是一种用于分类变量建模及预测的监督学习算法,使用案例包括员工流失、邮件过滤、金融欺诈等的预测。&/p&&p&正如你所见,许多回归算法都有其对应的分类形式,分类算法往往适用于类别(或其可能性)的预测,而非数值。&/p&&p&逻辑回归&/p&&p&&b&2.1 (正则化)逻辑回归&/b&&/p&&p&逻辑回归是线性回归所对应的分类方法,基本概念由线性回归推导而出。逻辑回归通过逻辑函数将预测映射到 0 到 1 的区间,因此预测值可被视为某一类别的概率。&/p&&p&该模型依旧是线性的,只有当数据线性可分时(例如,数据可被某决策平面完全分离),这一算法才会有很好的表现。逻辑回归同样能惩罚模型系数以进行正则化。&/p&&ul&&li&&b&优点:&/b&输出结果会有很好的概率解释,而算法也能通过正则化以避免过拟合。逻辑模型很容易通过随机梯度下降来更新数据模型。&/li&&li&&b&缺点:&/b&逻辑回归在面对多元或非线性决策边界时性能较差。&/li&&li&&b&实现:&/b&&/li&&/ul&&blockquote&Python - &a href=&http://link.zhihu.com/?target=http%3A//scikit-learn.org/stable/modules/linear_model.html%23logistic-regression& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&scikit-learn.org/stable&/span&&span class=&invisible&&/modules/linear_model.html#logistic-regression&/span&&span class=&ellipsis&&&/span&&/a&&br&R - &a href=&http://link.zhihu.com/?target=https%3A//cran.r-project.org/web/packages/glmnet/index.html& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&cran.r-project.org/web/&/span&&span class=&invisible&&packages/glmnet/index.html&/span&&span class=&ellipsis&&&/span&&/a&&/blockquote&&p&&b&2.2 分类树(集成方法)&/b&&/p&&p&对应于回归树的分类算法是分类树。通常,它们都是指决策树,更为严谨的说法是“分类回归树(CART)”,也就是非常有名的 CART 算法。&/p&&ul&&li&&b&优点:&/b&跟回归方法一样,分类树的集成方法在实践中的表现同样十分优异。它们在应对异常数据时有着相当的稳健性与可扩展性。由于其层级结构,分类树的集成方法能够很自然地对非线性决策边界建模。&/li&&li&&b&缺点:&/b&不可约束,单棵树容易过拟合,集成方法可削弱这一影响。&/li&&li&&b&实现:&/b&随机森林&/li&&/ul&&blockquote&Python - &a href=&http://link.zhihu.com/?target=http%3A//scikit-learn.org/stable/modules/ensemble.html%23regression& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&scikit-learn.org/stable&/span&&span class=&invisible&&/modules/ensemble.html#regression&/span&&span class=&ellipsis&&&/span&&/a&&br&R - &a href=&http://link.zhihu.com/?target=https%3A//cran.r-project.org/web/packages/randomForest/index.html& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&cran.r-project.org/web/&/span&&span class=&invisible&&packages/randomForest/index.html&/span&&span class=&ellipsis&&&/span&&/a&&/blockquote&&ul&&li&&b&实现:&/b&梯度提升树&/li&&/ul&&blockquote&Python - &a href=&http://link.zhihu.com/?target=http%3A//scikitlearn.org/stable/modules/ensemble.html%23classification& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&scikitlearn.org/stable/&/span&&span class=&invisible&&modules/ensemble.html#classification&/span&&span class=&ellipsis&&&/span&&/a&&br&R - &a href=&http://link.zhihu.com/?target=https%3A//cran.r-project.org/web/packages/gbm/index.html& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&cran.r-project.org/web/&/span&&span class=&invisible&&packages/gbm/index.html&/span&&span class=&ellipsis&&&/span&&/a&&/blockquote&&p&&b&2.3 深度学习&/b&&/p&&p&深度学习同样很容易适应于分类问题。实际上,深度学习应用地更多的是分类任务,如图像分类等。&/p&&ul&&li&&b&优点:&/b&深度学习非常适合于音频、文本与图像数据的分类。&/li&&li&&b&缺点:&/b&与回归方法一样,深度神经网络需要大量的数据进行训练,所以也不是一个通用目的算法。&/li&&li&&b&实现:&/b&&/li&&/ul&&blockquote&Python - &a href=&http://link.zhihu.com/?target=https%3A//keras.io/& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&keras.io/&/span&&span class=&invisible&&&/span&&/a&&br&R - &a href=&http://link.zhihu.com/?target=http%3A//mxnet.io/& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&mxnet.io/&/span&&span class=&invisible&&&/span&&/a&&/blockquote&&p&&b&2.4 支持向量机&/b&&/p&&p&支持向量机使用一个名为核函数的技巧,来将非线性问题变换为线性问题,其本质是计算两个观测数据的距离。支持向量机算法所寻找的是能够最大化样本间隔的决策边界,因此又被称为大间距分类器。&/p&&p&举例来说,使用线性核函数的支持向量机类似于逻辑回归,但更具稳健性。因而在实践中,支持向量机最大用处是用非线性核函数来对非线性决策边界进行建模。&/p&&ul&&li&&b&优点:&/b&支持向量机能对非线性决策边界建模,又有许多可选的核函数。在面对过拟合时,支持向量机有着极强的稳健性,尤其是在高维空间中。&/li&&li&&b&缺点:&/b&不过,支持向量机是内存密集型算法,选择正确的核函数就需要相当的j技巧,不太适用较大的数据集。在当前的业界应用中,随机森林的表现往往要优于支持向量机。&/li&&li&&b&实现:&/b&&/li&&/ul&&blockquote&Python - &a href=&http://link.zhihu.com/?target=http%3A//scikit-learn.org/stable/modules/svm.html%23classification& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&scikit-learn.org/stable&/span&&span class=&invisible&&/modules/svm.html#classification&/span&&span class=&ellipsis&&&/span&&/a&&br&R - &a href=&http://link.zhihu.com/?target=https%3A//cran.r-project.org/web/packages/kernlab/index.html& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&cran.r-project.org/web/&/span&&span class=&invisible&&packages/kernlab/index.html&/span&&span class=&ellipsis&&&/span&&/a&&/blockquote&&p&&b&2.5 朴素贝叶斯&/b&&/p&&p&朴素贝叶斯是一种基于条件概率和计数的简单算法,其本质是一个概率表,通过训练数据来更新其中的概率。它预测新观察值的过程,就是根据样本的特征值在概率表中来寻找最为可能的类别。&/p&&p&被称为“朴素”原因,是其核心的特征条件独立性假设(例如,每一项输入特征都相互独立),在现实中几乎是不成立的。&/p&&ul&&li&&b&优点:&/b&即便条件独立性假设很难成立,但实践中的朴素贝叶斯算法却能表现得很好。该算法易于实现且能伴随数据集更新。&/li&&li&&b&缺点:&/b&因为朴素贝叶斯的算法太过简单,所以很容易被上述分类算法所取代。&/li&&li&&b&实现:&/b&&/li&&/ul&&blockquote&Python - &a href=&http://link.zhihu.com/?target=http%3A//scikit-learn.org/stable/modules/naive_bayes.html& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&scikit-learn.org/stable&/span&&span class=&invisible&&/modules/naive_bayes.html&/span&&span class=&ellipsis&&&/span&&/a&&br&R - htps://&a href=&http://link.zhihu.com/?target=http%3A//cran.r-project.org/web/packages/naivebayes/index.html& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&cran.r-project.org/web/&/span&&span class=&invisible&&packages/naivebayes/index.html&/span&&span class=&ellipsis&&&/span&&/a&&/blockquote&&h2&&b&3. 聚类&/b&&/h2&&p&聚类是基于数据内部结构来寻找样本自然族群(集群)的无监督学习任务,使用案例包括用户画像、电商物品聚类、社交网络分析等。&/p&&p&由于聚类属于无监督学习,也就不会输出“正确的答案”,评价结果时往往要用到数据可视化。如果你需要“正确的答案”,亦即训练集中存在预标注的集群,那么用分类算法会更加合适。&/p&&p&K 均值&/p&&p&&b&3.1 K均值&/b&&/p&&p&K 均值是基于样本点间的几何距离来度量聚类的通用目的算法。由于集群围绕在聚类中心,结果会接近于球状并具有相似的大小。&/p&&p&我们之所以推荐该算法给初学者,是因为它不仅足够简单,而且足够灵活,对于大多数问题都能给出合理的结果。&/p&&ul&&li&&b&优点:&/b&K均值是最为流行的聚类算法,因为它足够快速、足够简单,如果你的预处理数据和特征工程都做得十分有效,那它将具备令人惊叹的灵活性。&/li&&li&&b&缺点:&/b&该算法需要指定集群的数量,而 K 值的选择通常都不是那么容易确定的。另外,如果训练数据中的真实集群并不是类球状的,那么 K 均值聚类会得出一些比较差的集群。&/li&&li&&b&实现:&/b&&/li&&/ul&&blockquote&Python - &a href=&http://link.zhihu.com/?target=http%3A//scikit-learn.org/stable/modules/clustering.html%23k-means& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&scikit-learn.org/stable&/span&&span class=&invisible&&/modules/clustering.html#k-means&/span&&span class=&ellipsis&&&/span&&/a&&br&R - &a href=&http://link.zhihu.com/?target=https%3A//stat.ethz.ch/R-manual/R-devel/library/stats/html/kmeans.html& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&stat.ethz.ch/R-manual/R&/span&&span class=&invisible&&-devel/library/stats/html/kmeans.html&/span&&span class=&ellipsis&&&/span&&/a&&/blockquote&&p&&b&3.2 仿射传播&/b&&/p&&p&仿射传播是一种相对较新的聚类算法,它基于两个样本点之间的图形距离来确定集群,其结果倾向于更小且大小不等的集群。&/p&&ul&&li&&b&优点:&/b&仿射传播不需要指出明确的集群数量,但需要指定“sample preference”和“damping”等超参数。&/li&&li&&b&缺点:&/b&仿射传播的主要缺点是训练速度较慢,且需要大量内存,因而难于扩展到大数据集。此外,该算法同样在假定潜在的集群要接近于球状。&/li&&li&&b&实现:&/b&&/li&&/ul&&blockquote&Python - &a href=&http://link.zhihu.com/?target=http%3A//scikit-learn.org/stable/modules/clustering.html%23affinity-propagation& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&scikit-learn.org/stable&/span&&span class=&invisible&&/modules/clustering.html#affinity-propagation&/span&&span class=&ellipsis&&&/span&&/a&&br&R - &a href=&http://link.zhihu.com/?target=https%3A//cran.r-project.org/web/packages/apcluster/index.html& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&cran.r-project.org/web/&/span&&span class=&invisible&&packages/apcluster/index.html&/span&&span class=&ellipsis&&&/span&&/a&&/blockquote&&p&&b&3.3 分层 / 层次&/b&&/p&&p&分层聚类,又名层次聚类,其算法基于以下概念来实现:&/p&&p&1) 每一个集群都从一个数据点开始;&/p&&p&2) 每一个集群都可基于相同的标准进行合并;&/p&&p&3) 重复这一过程,直至你仅剩下一个集群,这就获得了集群的层次结构。&/p&&ul&&li&&b&优点:&/b&层次聚类的最主要优点,是集群不再假定为类球形。此外,它可以很容易扩展到大数据集。&/li&&li&&b&缺点:&/b&类似于 K 均值,该算法需要选定集群的数量,即算法完成后所要保留的层次。&/li&&li&&b&实现:&/b&&/li&&/ul&&blockquote&Python - &a href=&http://link.zhihu.com/?target=http%3A//scikitlearn.org/stable/modules/clustering.html%23hierarchical-clustering& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&scikitlearn.org/stable/&/span&&span class=&invisible&&modules/clustering.html#hierarchical-clustering&/span&&span class=&ellipsis&&&/span&&/a&&br&R - &a href=&http://link.zhihu.com/?target=https%3A//stat.ethz.ch/R-manual/R-devel/library/stats/html/hclust.html& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&stat.ethz.ch/R-manual/R&/span&&span class=&invisible&&-devel/library/stats/html/hclust.html&/span&&span class=&ellipsis&&&/span&&/a&&/blockquote&&p&&b&3.4 DBSCAN&/b&&/p&&p&DBSCAN 是一种基于密度的聚类算法,它将样本点的密集区域组成集群;其最新进展是HDBSCAN,它允许集群的密度可变。&/p&&ul&&li&&b&优点:&/b&DBSCAN 不需要假定类球形集群,其性能可以扩展。此外,它不需要每个点都被分配到集群中,这就降低了集群的噪音。&/li&&li&&b&缺点:&/b&用户必须要调整“epsilon”和“min_sample”这两个超参数来定义集群密度。DBSCAN 对此非常敏感。&/li&&li&&b&实现:&/b&&/li&&/ul&&blockquote&Python - &a href=&http://link.zhihu.com/?target=http%3A//scikit-learn.org/stable/modules/clustering.html%23dbscan& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&scikit-learn.org/stable&/span&&span class=&invisible&&/modules/clustering.html#dbscan&/span&&span class=&ellipsis&&&/span&&/a&&br&R - &a href=&http://link.zhihu.com/?target=https%3A//cran.r-project.org/web/packages/dbscan/index.html& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&cran.r-project.org/web/&/span&&span class=&invisible&&packages/dbscan/index.html&/span&&span class=&ellipsis&&&/span&&/a&&/blockquote&&p&&b&维度灾难&/b&&/p&&p&在机器学习领域,“维度(Dimensionality)”通常指数据集中的特征数量(即输入变量的个数)。&/p&&p&当特征的个数特别大的时候(相对于数据集中观测样本的数量来说),训练出一个有效的模型,对算法要求就会特别高(即,用现有的算法训练出一个有效的模型特别困难)。这就是所谓的“维度灾难(Curse of Dimensionality)”,特别是对依赖于距离计算的聚类算法而言。&/p&&p&对于“维度灾难”,有位 Quora 用户给出了一个非常好的类比:&/p&&p&假设有一条100码的直线,而你在该直线的某处掉了一枚硬币。要找回硬币并不难,你只需沿着这条线走就行了,最多花上你2分钟时间。&/p&&p&然后,假设有一个长和宽都是100码的广场,而你是把硬币掉在广场的某个位置。现在再想找回它,可就不容易了,这好比在两个并排的足球场中找针,可能会耗上你几天时间。&/p&&p&再然后,假设是一个长、宽、高都是100码的立方体,那就好比是在30层楼高的大型体育场内找zhen找针……&/p&&p&随着维度的增加,在空间中搜索的难度也会变得愈加困难。&/p&&p&Quora链接:&/p&&blockquote&&a href=&http://link.zhihu.com/?target=https%3A//www.quora.com/What-is-the-curse-of-dimensionality/answer/Kevin-Lacker& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://www.&/span&&span class=&visible&&quora.com/What-is-the-c&/span&&span class=&invisible&&urse-of-dimensionality/answer/Kevin-Lacker&/span&&span class=&ellipsis&&&/span&&/a&&/blockquote&&p&这就需要数据降维的办法:特征选取和特征提取。&/p&&h2&&b&4. 特征选取&/b&&/h2&&p&特征选取是从你的数据集中过滤掉不相关或冗余的特征。特征选取与特征提取的关键区别在于:特征选取是从原特征集中选取一个子特征集,而特称提取则是在原特征集的基础上重新构造出一些(一个或多个)全新的特征。&/p&&p&需要注意的是,某些监督式机器学习算法已经具备了内在的特征选取机制:比如正则回归与随机森林。通常,我们是建议一开始优先尝试这些算法,如果它们能匹配上你的问题的话。对此我们已经做过介绍。&/p&&p&作为独立的任务,特征选取既可以是非监督式的(如方差阈值),又可以是监督式的(比遗传算法)。有必要的话,你还可以把多种方法以某种合理的方式整合在一起。&/p&&p&&b&4.1 方差阈值&/b&&/p&&p&方差阈值会摒弃掉观测样本那些观测值改变较小的特征(即,它们的方差小于某个设定的阈值)。这样的特征的价值极小。&/p&&p&举例来说,如果你有一份公共健康数据,其中96%的人都是35岁的男性,那么去掉“年龄”和“性别”的特征也不会损失重要信息。&/p&&p&由于方差阈值依赖于特征值的数量级,你应该对特征值先做归一化处理。&/p&&ul&&li&&b&优点:&/b&使用方差阈值方式进行数据降维只需一个非常可靠的直觉:特征值不怎么改变的特征,不会带来什么有用的信息。这是在你建模初期进行数据降维相对安全的一种方式。&/li&&li&&b&缺点:&/b&如果你正在解决的问题并不需要进行数据降维,即便使用了方差阈值也几乎没有什么作用。此外,你需要手工设置、调整方差阈值,这个过程相当具有技术含量。我们建议从一个保守(也就是,较低)的阈值开始。&/li&&li&&b&实现:&/b&&/li&&/ul&&blockquote&Python - &a href=&http://link.zhihu.com/?target=http%3A//scikit-learn.org/stable/modules/generated/sklearn.feature_selection.VarianceThreshold.html& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&scikit-learn.org/stable&/span&&span class=&invisible&&/modules/generated/sklearn.feature_selection.VarianceThreshold.html&/span&&span class=&ellipsis&&&/span&&/a&&br&R - &a href=&http://link.zhihu.com/?target=https%3A//www.rdocumentation.org/packages/caret/versions/6.0-76/topics/nearZeroVar& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://www.&/span&&span class=&visible&&rdocumentation.org/pack&/span&&span class=&invisible&&ages/caret/versions/6.0-76/topics/nearZeroVar&/span&&span class=&ellipsis&&&/span&&/a&&/blockquote&&p&&b&4.2 相关性阈值&/b&&/p&&p&相关性阈值会去掉那些高度相关的特征(亦即,这些特征的特征值变化与其他特征非常相似)。它们提供的是冗余信息。&/p&&p&举例来说,如果你有一个房地产数据,其中两个特征分别是“房屋面积(单位:平方英尺)”和“房屋面积(单位:平方米)”,那么,你就可以去掉其中的任何一个(这非常安全,也不会给你的模型带来任何负面影响)。&/p&&p&问题是,你该去掉哪一个特征呢?首先,你应该计算所有特征对的相关系数。而后,如果某个特征对的相关系数大于设定的阈值,那你就可以去掉其中平均绝对相关系数较大的那一个。&/p&&ul&&li&&b&优点:&/b&使用相关性阈值同样只需一个可靠的直觉:相似的特征提供了冗余的信息。对于某些含有强相关性特征较多的数据集,有些算法的稳健性并不好,因此,去掉它们可以提升整个模型的性能(计算速度、模型准确度、模型稳健性,等等)。&/li&&li&&b&缺点:&/b&同样,你还是必须手动去设置、调整相关性阈值,这同样是个棘手且复杂的过程。此外,如果你设置的阈值过低,那么你将会丢失掉一些有用的信息。无论在什么时候,我们都更倾向于使用那些内置了特征选取的算法。对于没有内置特征提取的算法,主成分分析是一个很好的备用方案。&/li&&li&&b&实现:&/b&&/li&&/ul&&blockquote&Python - &a href=&http://link.zhihu.com/?target=https%3A//gist.github.com/Swarchal/aaeb21e8e8dfd6& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&gist.github.com/Swarcha&/span&&span class=&invisible&&l/aaeb21e8e8dfd6&/span&&span class=&ellipsis&&&/span&&/a&&br&R - &a href=&http://link.zhihu.com/?target=https%3A//www.rdocumentation.org/packages/caret/versions/6.0-73/topics/findCorrelation& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://www.&/span&&span class=&visible&&rdocumentation.org/pack&/span&&span class=&invisible&&ages/caret/versions/6.0-73/topics/findCorrelation&/span&&span class=&ellipsis&&&/span&&/a&&/blockquote&&p&&b&4.3 遗传算法&/b&&/p&&p&遗传算法是可用于不同任务的一大类算法的统称。它们受进化生物学与自然选择的启发,结合变异与交叉,在解空间内进行高效的遍历搜索。这里有一篇非常棒的简介:“遗传算法背后的原理引入”。&/p&&p&在机器学习领域,遗传算法主要有两大用处。&/p&&p&&b&其一,用于最优化,比如去找神经网络的最佳权重。&/b&&/p&&p&&b&其二,是用于监督式特征提取。&/b&这一用例中,“基因”表示单个特征,同时“有机体”表示候选特征集。“种群体”内的每一个有机体都会基于其适应性进行评分,正如在测试数据集上进行模型性能测试。最能适应环境的有机体将会生存下来,并不断繁衍,一直迭代,直至最终收敛于某个最优的解决方案。&/p&&ul&&li&&b&优点:&/b&在穷举搜索不可行的情况下,对高维数据集使用遗传算法会相当有效。当你的算法需要预处理数据却没有内置的特征选取机制(如最近邻分类算法),而你又必须保留最原始的特征(也就是不能用任何主成分分析算法),遗传算法就成了你最好的选择。这一情况在要求透明、可解释方案的商业环境下时有发生。&/li&&li&&b&缺点:&/b&遗传算法为你解决方案的实施带来了更高的复杂度,而多数情况下它们都是不必要的麻烦。如果可能的话,主成分分析或其它内置特征选取的算法将会更加高效和简洁。&/li&&li&&b&实现:&/b&&/li&&/ul&&blockquote&Python - &a href=&http://link.zhihu.com/?target=https%3A//pypi.python.org/pypi/deap& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&pypi.python.org/pypi/de&/span&&span class=&invisible&&ap&/span&&span class=&ellipsis&&&/span&&/a&&br&R - &a href=&http://link.zhihu.com/?target=https%3A//cran.r-project.org/web/packages/GA/vignettes/GA.html& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&cran.r-project.org/web/&/span&&span class=&invisible&&packages/GA/vignettes/GA.html&/span&&span class=&ellipsis&&&/span&&/a&&/blockquote&&p&&b&4.4 荣誉奖:逐步搜索&/b&&/p&&p&逐步搜索是一个基于序列式搜索的监督式特征选取算法。它有两种形式:前向搜索和反向搜索。&/p&&p&对于前向逐步搜索,你从没有任何特征开始。接着,从候选特征集中,选择一个特征来训练模型;然后,保存模型性能最好对应的那个特征;再往下,你不断往训练模型的特征集中添加特征,一次添加一个特征,直到你模型的性能不再提升。&/p&&p&反向逐步搜索的过程相同,只不过顺序相反:从把所有的特征都用于训练模型,接着一次性移除一个特征,直到模型的性能骤降。&/p&&p&我们提及这一算法纯粹是源于某些历史原因。尽管很多教科书都把逐步搜索算法作为一个有效的方法,但它所表现出来的性能总是不及其它监督式方法,比如正则化。逐步搜索有很多明显的缺陷,最致命的一点就是它是一个贪心算法,无法面对未来变化的冲击。我们并不推荐这个算法。&/p&&h2&&b&5. 特征提取&/b&&/h2&&p&特征提取是用来创造一个新的、较小的特征集,但仍能保留绝大部分有用的信息。值得再提的是,特征选取是用来保留原始特征集中的一部分子特征集,而特征提取则是创造全新的特征集。&/p&&p&跟特征选取一样,某些算法内部已经具有了特征提取的机制。最好的案例就是深度学习,它可以通过每一层隐神经层,提取出越来越有用的能表征原始数据的特征。我们在“深度学习”部分已给出相关的讲解。&/p&&p&作为独立的任务,特征提取可以是非监督式的(如主成分分析)或监督式的(如线性判别分析)。&/p&&p&&b&5.1 主成分分析&/b&&/p&&p&主成分分析是一个非监督式算法,它用来创造原始特征的线性组合。新创造出来的特征他们之间都是正交的,也就是没有关联性。具体来说,这些新特征是按它们本身变化程度的大小来进行排列的。第一个主成分代表了你的数据集中变化最为剧烈的特征,第二个主成分代表了变化程度排在第二位的特征,以此类推。&/p&&p&&br&&/p&&figure&&img src=&https://pic3.zhimg.com/v2-9af9f05eed955fcf5cb2b26_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&528& data-rawheight=&372& class=&origin_image zh-lightbox-thumb& width=&528& data-original=&https://pic3.zhimg.com/v2-9af9f05eed955fcf5cb2b26_r.jpg&&&/figure&&p&&br&&/p&&p&因此,你可以通过限制使用主成分的个数来达到数据降维的目的。例如,你可以仅采用能使累积可解释方差为90%的主成分数量。&/p&&p&你需要在使用主成分分析之前,对数据进行归一化处理。否则,原始数据中特征值数量级最大的那个特征将会主导你新创造出来的主成分特征。&/p&&ul&&li&&b&优点:&/b&主成分分析是一项多用途技术,实用效果非常好。它部署起来快速、简单,也就是说,你可以很方便地测试算法性能,无论使用还是不使用主成分分析。此外,主成分分析还有好几种变体和扩展(如:核主成分分析(kernel PCA),稀疏主成分分析(sparse PCA)),用以解决特定的问题。&/li&&li&&b&缺点:&/b&新创造出来的主成分并不具备可解释性,因而在某些情况下,新特征与应用实际场景之间很难建立起联系。此外,你仍然需要手动设置、调整累积可解释方差的阈值。&/li&&li&&b&实现:&/b&&/li&&/ul&&blockquote&Python - &a href=&http://link.zhihu.com/?target=http%3A//scikit-learn.org/stable/modules/generated/sklearn.decomposition.PCA.html& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&scikit-learn.org/stable&/span&&span class=&invisible&&/modules/generated/sklearn.decomposition.PCA.html&/span&&span class=&ellipsis&&&/span&&/a&&br&R - &a href=&http://link.zhihu.com/?target=https%3A//stat.ethz.ch/R-manual/R-devel/library/stats/html/prcomp.html& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&stat.ethz.ch/R-manual/R&/span&&span class=&invisible&&-devel/library/stats/html/prcomp.html&/span&&span class=&ellipsis&&&/span&&/a&&/blockquote&&p&&b&5.2 线性判别分析&/b&&/p&&p&线性判别分析不是隐含狄利克雷分布,它同样用来构造原始特征集的线性组合。但与主成分分析不同,线性判别分析不会最大化可解释方差,而是最大化类别间的分离程度。&/p&&p&因此,线性判别分析是一种监督式学习方式,它必须使用有标记的数据集。那么,线性判别分析与主成分分析,到底哪种方法更好呢?这要视具体的情况而定,“没有免费的午餐”原理在这里同样适用。&/p&&p&线性判别分析同样依赖于特征值的数量级,你同样需要先对特征值做归一化处理。&/p&&ul&&li&&b&优点:&/b&线性判别分析是一种监督式学习,基于这种方式获取到的特征可以(但并不总是能)提升模型性能。此外,线性判别分析还有一些变体(如二次线性判别分析),可用来解决特定的问题。&/li&&li&&b&缺点:&/b&与主成分分析一样,新创造出来的特征不具有可解释性。而且,你同样要手动设置、调整需要保留的特征数量。线性判别分析需要已经标记好的数据,因此,这也让它更加接地气儿。&/li&&li&&b&实现:&/b&&/li&&/ul&&blockquote&Python - &a href=&http://link.zhihu.com/?target=http%3A//scikit-learn.org/stable/modules/generated/sklearn.discriminant_analysis.LinearDiscriminantAnalysis.html%23sklearn.discriminant_analysis.LinearDiscriminantAnalysis& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&scikit-learn.org/stable&/span&&span class=&invisible&&/modules/generated/sklearn.discriminant_analysis.LinearDiscriminantAnalysis.html#sklearn.discriminant_analysis.LinearDiscriminantAnalysis&/span&&span class=&ellipsis&&&/span&&/a&&br&R - &a href=&http://link.zhihu.com/?target=https%3A//stat.ethz.ch/R-manual/R-devel/library/MASS/html/lda.html& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&stat.ethz.ch/R-manual/R&/span&&span class=&invisible&&-devel/library/MASS/html/lda.html&/span&&span class=&ellipsis&&&/span&&/a&&/blockquote&&p&&b&5.3 自编码机&/b&&/p&&p&自编码机是一种人工神经网络,它是用来重新构建原始输入的。例如,图像自编码机是训练来重新表征原始数据的,而非用以区分图片里面的小猫、小狗。&/p&&p&但这有用吗?这里的关键,是在隐含层搭建比输入层和输出层更少数量的神经元。这样,隐含层就会不断学习如何用更少的特征来表征原始图像。&/p&&p&&br&&/p&&figure&&img src=&https://pic2.zhimg.com/v2-56ea10d2a265fa301939_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&299& data-rawheight=&168& class=&content_image& width=&299&&&/figure&&p&&br&&/p&&p&因为是用输入图像来作为目标输出,自编码机被视为无监督学习。它们可被直接使用(如:图像压缩)或按顺序堆叠使用(如:深度学习)。&/p&&ul&&li&&b&优点:&/b&自编码机是人工神经网络中的一种,这表示它们对某些特定类型的数据表现会非常好,比如图像和语音数据。&/li&&li&&b&缺点:&/b&自编码机是一种人工神经网络。这就是说,它们的优化需要更多的数据来进行训练。它们并不能作为一般意义上的数据降维算法来用。&/li&&/ul&&p&&/p&
&p&因为他们觉得反正招进来之后我也用不上二叉树,你们谁写业务代码的时候用上二叉树了?所以我不会就不会呗。这其实就是“高等数学有啥用,又不能用来买菜”的进化版本。&/p&&p&的确很少有写业务代码的时候会直接用上二叉树。但是真的没有吗?XML/DOM是什么?是不是一棵树?为什么DOM可以和XML一一对应?因为XML序列化就是树的遍历的结果。能和XML对应,也就能跟JSON对应,因为两者都可以对应到树(只是表示逻辑上有些区别)。&/p&&p&一个业务系统里有任务(Task),任务有相应的执行计划(Plan),计划可以用子任务组成,子任务可以是基础任务,也可以通过Plan拆分成更多的子任务。这是什么?这不就是树吗?那么怎么存储?JSON不就很好吗。怎么从JSON加载、再保存会JSON?树的遍历。怎么计算任务总共需要多少个基础任务?树的遍历。怎么计算计划总共需要多少时间?树的遍历。&/p&&p&一个社交系统里,用户可以加好友,好友还有别的好友,这是什么?无向图。如果是知乎这样的关注系统呢?有向图。一个用户点了个赞,扩散到另一个用户至少要经过几次转发?最短路径。我要画一个小圈子里的人之间的关系图,怎么做?最小生成树。我要整理信息路径,看这批用户里哪些生产内容,哪些阅读内容,按什么次序传播,怎么做?拓扑排序。&/p&&p&&br&&/p&&p&我们只是不想招一个看到上面这些话的时候一脸懵逼的人。&/p&
因为他们觉得反正招进来之后我也用不上二叉树,你们谁写业务代码的时候用上二叉树了?所以我不会就不会呗。这其实就是“高等数学有啥用,又不能用来买菜”的进化版本。的确很少有写业务代码的时候会直接用上二叉树。但是真的没有吗?XML/DOM是什么?是不是…
&figure&&img src=&https://pic4.zhimg.com/02b6ad5b8fcd28af92b3bd094b86f30f_b.jpg& data-rawwidth=&1000& data-rawheight=&600& class=&origin_image zh-lightbox-thumb& width=&1000& data-original=&https://pic4.zhimg.com/02b6ad5b8fcd28af92b3bd094b86f30f_r.jpg&&&/figure&&p&Python中到底有哪些库会让程序员爱不释手?以至于一次上瘾,造成永久性伤害(这句话好像在哪里见过),今天我们就来整理一番这样的库,欢迎各位在评论区或者私信我添加或者修改相关库内容。&/p&&p& 如果你想学习编程,但是找不到学习路径和资源,欢迎关注专栏:&a class=&internal& href=&https://zhuanlan.zhihu.com/passer&&学习编程&/a&(本专栏只接受首发文章投稿)
&/p&&h2&&figure&&img data-rawheight=&80& data-rawwidth=&1000& src=&https://pic4.zhimg.com/485fec3d873dcb4d8c277_b.png& class=&origin_image zh-lightbox-thumb& width=&1000& data-original=&https://pic4.zhimg.com/485fec3d873dcb4d8c277_r.jpg&&&/figure&GUI 图形界面&/h2&&p&Tkinter
&a class=& wrap external& href=&http://link.zhihu.com/?target=https%3A//wiki.python.org/moin/TkInter/& target=&_blank& rel=&nofollow noreferrer&&Tkinter&/a&&/p&&p&wxPython:
&a class=& wrap external& href=&http://link.zhihu.com/?target=https%3A//www.wxpython.org/& target=&_blank& rel=&nofollow noreferrer&&wxPython&/a&&/p&&p&PyGTK:
&a class=& wrap external& href=&http://link.zhihu.com/?target=http%3A//www.pygtk.org/& target=&_blank& rel=&nofollow noreferrer&&PyGTK&/a&&/p&&p&PyQt:
&a class=& wrap external& href=&http://link.zhihu.com/?target=https%3A//sourceforge.net/projects/pyqt/& target=&_blank& rel=&nofollow noreferrer&&PyQt&/a&&/p&&p&PySide:
&a class=& wrap external& href=&http://link.zhihu.com/?target=http%3A//wiki.qt.io/Category%3ALanguageBindings%3A%3APySide& target=&_blank& rel=&nofollow noreferrer&&PySide&/a&&/p&&h2&&b&Web框架&/b&&/h2&&p&django: &a class=& wrap external& href=&http://link.zhihu.com/?target=https%3A//www.djangoproject.com/& target=&_blank& rel=&nofollow noreferrer&&django&/a&&/p&&p&web2py:&a class=& wrap external& href=&http://link.zhihu.com/?target=http%3A//web2py.com/& target=&_blank& rel=&nofollow noreferrer&&web2py&/a&&/p&&p&flask: &a class=& wrap external& href=&http://link.zhihu.com/?target=http%3A//flask.pocoo.org/& target=&_blank& rel=&nofollow noreferrer&&flask&/a&&/p&&p&bottle: &a class=& wrap external& href=&http://link.zhihu.com/?target=http%3A//www.bottlepy.org/docs/dev/index.html& target=&_blank& rel=&nofollow noreferrer&&bottle&/a&&/p&&p&tornadoweb :&a class=& wrap external& href=&http://link.zhihu.com/?target=http%3A//www.tornadoweb.org/en/stable/& target=&_blank& rel=&nofollow noreferrer&&tornadoweb&/a&&/p&&p&webpy: &a class=& wrap external& href=&http://link.zhihu.com/?target=http%3A//webpy.org/& target=&_blank& rel=&nofollow noreferrer&&webpy&/a&&/p&&p&cherrypy: &a class=& wrap external& href=&http://link.zhihu.com/?target=http%3A//www.cherrypy.org/& target=&_blank& rel=&nofollow noreferrer&&cherrypy&/a&(感谢&a data-editable=&true& data-title=&@钢琴手& class=&member_mention& href=&http://www.zhihu.com/people/6e9c9ebed2bd& data-hash=&6e9c9ebed2bd& data-tip=&p$b$6e9c9ebed2bd& data-hovercard=&p$b$6e9c9ebed2bd&&@钢琴手&/a& 提供信息) &br&&/p&&p&jinjs: &a class=& wrap external& href=&http://link.zhihu.com/?target=http%3A//docs.jinkan.org/docs/jinja2/& target=&_blank& rel=&nofollow noreferrer&&jinja&/a&(感谢&a data-editable=&true& data-title=&@钢琴手& class=&member_mention& href=&http://www.zhihu.com/people/6e9c9ebed2bd& data-hash=&6e9c9ebed2bd& data-tip=&p$b$6e9c9ebed2bd& data-hovercard=&p$b$6e9c9ebed2bd&&@钢琴手&/a& 提供信息)&br&&/p&&h2&&figure&&img data-rawheight=&80& data-rawwidth=&1000& src=&https://pic4.zhimg.com/485fec3d873dcb4d8c277_b.png& class=&origin_image zh-lightbox-thumb& width=&1000& data-original=&https://pic4.zhimg.com/485fec3d873dcb4d8c277_r.jpg&&&/figure& 科学计算&/h2&&p&numpy: &a class=& wrap external& href=&http://link.zhihu.com/?target=http%3A//www.numpy.org/& target=&_blank& rel=&nofollow noreferrer&&numpy&/a&&/p&&p&SciPy:&a class=& wrap external& href=&http://link.zhihu.com/?target=http%3A//www.scipy.org/& target=&_blank& rel=&nofollow noreferrer&&scipy&/a&&/p&&p&pandas: &a class=& wrap external& href=&http://link.zhihu.com/?target=http%3A//pandas.pydata.org/& target=&_blank& rel=&nofollow noreferrer&&pandas&/a&&/p&&p&blaze: &a class=& wrap external& href=&http://link.zhihu.com/?target=http%3A//blaze.readthedocs.io/en/latest/index.html& target=&_blank& rel=&nofollow noreferrer&&blaze&/a&&/p&&h3&密码学&/h3&&p&cryptography:&a class=& wrap external& href=&http://link.zhihu.com/?target=https%3A//pypi.python.org/pypi/cryptography/& target=&_blank& rel=&nofollow noreferrer&&cryptography&/a&&br&&/p&&p&hashids:&a href=&http://link.zhihu.com/?target=http%3A//www.oschina.net/p/hashids& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&hashids&/a&&br&&/p&&p&Paramiko:&a class=& wrap external& href=&http://link.zhihu.com/?target=http%3A//www.paramiko.org/& target=&_blank& rel=&nofollow noreferrer&&Paramiko&/a&&/p&&p&Passlib:&a href=&http://link.zhihu.com/?target=https%3A//pythonhosted.org/passlib/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Passlib&/a&&/p&&p&PyCrypto:&a class=& wrap external& href=&http://link.zhihu.com/?target=https%3A//pypi.python.org/pypi/pycrypto& target=&_blank& rel=&nofollow noreferrer&&PyCrypto&/a&&/p&&p&PyNacl:&a class=& wrap external& href=&http://link.zhihu.com/?target=http%3A//pynacl.readthedocs.io/en/latest/& target=&_blank& rel=&nofollow noreferrer&&PyNacl&/a&&/p&&h2&&figure&&img data-rawheight=&80& data-rawwidth=&1000& src=&https://pic4.zhimg.com/485fec3d873dcb4d8c277_b.png& class=&origin_image zh-lightbox-thumb& width=&1000& data-original=&https://pic4.zhimg.com/485fec3d873dcb4d8c277_r.jpg&&&/figure& 爬虫相关&/h2&&p&urllib
、requests&br&&/p&&p&scrapy: &a class=& wrap external& href=&http://link.zhihu.com/?target=http%3A//scrapy.org/& target=&_

我要回帖

更多关于 在家里电脑赚钱 的文章

 

随机推荐