博弈中博弈论的纳什均衡衡,怎么做

{"debug":false,"apiRoot":"","paySDK":"/api/js","wechatConfigAPI":"/api/wechat/jssdkconfig","name":"production","instance":"column","tokens":{"X-XSRF-TOKEN":null,"X-UDID":null,"Authorization":"oauth c3cef7c66aa9e6a1e3160e20"}}
{"database":{"Post":{"":{"contributes":[{"sourceColumn":{"lastUpdated":,"description":"Talk is cheap, show me the code!","permission":"COLUMN_PUBLIC","memberId":,"contributePermission":"COLUMN_PUBLIC","translatedCommentPermission":"all","canManage":true,"intro":"Talk is cheap, show me the code!","urlToken":"pythoner","id":21250,"imagePath":"v2-cccb96707c47bdf.jpg","slug":"pythoner","applyReason":"0","name":"撸代码,学知识","title":"撸代码,学知识","url":"/pythoner","commentPermission":"COLUMN_ALL_CAN_COMMENT","canPost":true,"created":,"state":"COLUMN_NORMAL","followers":29250,"avatar":{"id":"v2-cccb96707c47bdf","template":"/{id}_{size}.jpg"},"activateAuthorRequested":false,"following":false,"imageUrl":"/v2-cccb96707c47bdf_l.jpg","articlesCount":46},"state":"accepted","targetPost":{"titleImage":"/v2-0a08c813ef9bbeb033c8f1f03f7c0103_r.jpg","lastUpdated":,"imagePath":"v2-0a08c813ef9bbeb033c8f1f03f7c0103.jpg","permission":"ARTICLE_PUBLIC","topics":[6615],"summary":"喜欢玩德州扑克的人应该都听说过“GTO”这个词。GTO,即 GameTheory Optimal,翻译成中文应该叫做“游戏理论最优化”。直接翻译过来有点拗口,通俗一点的解释可以是:在游戏中,你可以采取一种最优策略,使得自己的损失最小,同时游戏中的对手也必须采取相…","copyPermission":"ARTICLE_COPYABLE","translatedCommentPermission":"all","likes":0,"origAuthorId":0,"publishedTime":"T19:41:33+08:00","sourceUrl":"","urlToken":,"id":2499466,"withContent":false,"slug":,"bigTitleImage":false,"title":"通过几个例子理解博弈论与纳什均衡","url":"/p/","commentPermission":"ARTICLE_ALL_CAN_COMMENT","snapshotUrl":"","created":,"comments":0,"columnId":21250,"content":"","parentId":0,"state":"ARTICLE_PUBLISHED","imageUrl":"/v2-0a08c813ef9bbeb033c8f1f03f7c0103_r.jpg","author":{"bio":"Python爱好者,关注爬虫、数据分析、数据挖掘、数据可视化等","isFollowing":false,"hash":"890bef55fb","uid":405600,"isOrg":false,"slug":"xianhu","isFollowed":false,"description":"不想当产品的程序员不是好的数据分析师!","name":"笑虎","profileUrl":"/people/xianhu","avatar":{"id":"7e0dcfc42ad","template":"/{id}_{size}.jpg"},"isOrgWhiteList":false},"memberId":,"excerptTitle":"","voteType":"ARTICLE_VOTE_CLEAR"},"id":583894}],"title":"通过几个例子理解博弈论与纳什均衡","author":"xianhu","content":"喜欢玩德州扑克的人应该都听说过“GTO”这个词。GTO,即 GameTheory Optimal,翻译成中文应该叫做“游戏理论最优化”。直接翻译过来有点拗口,通俗一点的解释可以是:在游戏中,你可以采取一种最优策略,使得自己的损失最小,同时游戏中的对手也必须采取相对应的策略,否则只会扩大你的受益。讲到GTO,就不得不提到博弈论中非常著名的一个理论:纳什均衡(Nash Equilibrium)。该理论是由著名的经济学家,博弈论创始人,诺贝尔奖获得者约翰·纳什提出的,也就是电影《美丽心灵》的男主角原型。该理论是说:在非合作类博弈中,存在一种策略组合,使得每个参与人的策略是对其他参与人策略的最优反应。如果参与者当前选择的策略形成了“纳什均衡”,那么对于任何一位参与者来说,单方更改自己的策略不会带来任何好处。约翰·纳什证明了在每个参与者都只有有限种策略选择,并允许混合策略的前提下,纳什均衡一定存在。上边的解释还是有点拗口,这里通过几个例子,更直观的理解一下这个理论。囚犯的困境假设有两个小偷A和B联手闯入民宅盗窃被抓,警方将两人置于不同的房间进行审讯,并给出如下政策:如果一个犯罪嫌疑人坦白并交出了赃物,两人都会被判有罪。如果另一个犯罪嫌疑人也坦白,则两人各被判刑8年;如果另一个犯罪嫌人抵赖,再加刑2年,而坦白者有功,会被立即释放。如果两人都抵赖,偷窃罪证据不足,但会因私入民宅而各判入狱1年。即:表中的数字表示A,B各自的判刑结果。博弈论分析中一般都用这样的表来表示。此时有人会觉得双方都抵赖就好了,但问题是双方被隔离,都会怀疑对方会出卖自己以求自保。两个人都会这么想:假如对方坦白,此时如果我抵赖得坐10年监狱,如果我坦白才坐8年监狱;假如对方抵赖,此时如果我也抵赖会被判1年,如果我坦白可以被释放。综合以上考虑,不管对方坦白与否,对我而言都是坦白划算。此时最后的“纳什均衡”只能是两个人都坦白,共同被判8年刑期。智猪博弈猪圈里有两头猪,一头大猪,一头小猪。猪圈的一边有个踏板,每踩一下踏板,在远离踏板的猪圈的另一边的投食口就会落下少量的食物。如果一只猪去踩踏板,另一只猪就有机会抢先吃到另一边落下的食物。但当小猪踩踏板时,大猪会在小猪跑到食槽之前刚好吃光所有的食物;大猪踩动了踏板,则有机会在小猪吃完落下的食物之前跑到食槽,争吃到另一半食物。那么,两只猪各会采取什么策略?当然是小猪等在食槽边,而大猪不知疲倦地奔忙于踏板和食槽之间。因为,小猪踩踏板将一无所获,不踩踏板反而能吃上食物。对小猪而言,无论大猪是否踩动踏板,不踩踏板总是好的选择。反观大猪,已明知小猪不会去踩动踏板,自己亲自去踩踏板还有点吃的,总比不踩强,所以只好去踩踏板。范式博弈GOO公司和SAM公司存在利益关系,二者的收益会随着博弈的变化而不断更替。如下图:双方各有两个可选策略“合作”与“背叛”,格中的四组数据表示四个博弈结局的各自收益,每组数据的第一个数字表示GOO公司的收益,后一个数字表示SAM公司的收益。现在我们站在GOO公司的角度来思考整个博弈策略。假如SAM选择合作,那么我方合作的收益是3,而我方背叛的收益是5,我方应该选择背叛;假如SAM选择背叛,那么我方合作的收益是 -3,而我方背叛的收益是-1,我方还是应该选择背叛。同理,SAM公司也会做出相同的选择。最后我们发现,本次博弈的双方都采取了背叛策略,各自的收益都为-1,这是一个比较糟糕的结局,尽管对任何一方来说都不是最糟糕的那种。但博弈的次数往往不止一次,当二家公司经历了多次背叛策略的博弈之后,发现公式上还有一个(3,3)收益的双赢局面,这个结果显然要好很多,因此二家公司在之后的博弈过程中必然会尝试互建信任,从而驱使双方都选择合作策略。但假使双方都知道博弈次数是有限的,也许下一次博弈就是最后一次,那么为了避免对方在最后一轮博弈中选择背叛而使我方遭受-3的损失,于是双方都会采取了背叛策略,最后的博弈结果又回到了(-1,-1)。由此可见,随着次数的变化,博弈的性质也会发生变化,纳什均衡点会发生变化。饿狮博弈假设有A、B、C、D、E、F六只狮子(强弱从左到右依次排序)和一只绵羊。假设A吃掉绵羊后就会打盹,这时比A稍弱的B就会趁机吃掉A,接着B也会打盹,然后比B稍弱的C就会吃掉B,以此类推。问:狮子A敢不敢吃绵羊?该题须采用逆向分析法,从最弱的F开始分析,依次前推。假设E睡着了,F肯定会吃掉E,因为在F的后面已没有其它狮子了,不用担心自己被吃掉。继续前推,既然E知道自己睡着会被F吃掉,那么E必然不敢吃睡着了的D。既然E不敢吃掉D,那么D则可以放心去吃睡着的C。依次前推,得出C不吃,B吃,A不吃。所以答案是狮子A不敢吃掉绵羊。但是,如果我们在狮子F的后面增加了一只狮子G,总数变成7只,用逆向分析法按照上题步骤再推一次,如下图。这次的答案变成了狮子A敢吃掉绵羊。对比两次博弈我们发现,狮子A敢不敢吃绵羊取决于狮子总数的奇偶性:当总数为奇数时,A敢吃;总数为偶数时,A则不敢吃。因此,总数为奇数和总数为偶数的狮群博弈结果形成了两个稳定的纳什均衡点。硬币正反博弈加入你和一个美女一起玩个数学游戏。美女提议:让我们各自亮出硬币的一面,如果我们都是正面,那么我给你3元;如果我们都是反面,我给你1元;剩下的情况你给我2元。那么你该不该和这位美女玩这个游戏呢?这里需要讲一下纳什均衡的分类:(1)纯战略纳什均衡,也就是说玩家都能够采取固定的策略(比如一直出正面或者一直出反面),使得每人都赚得最多或亏得最少。(2)混合战略纳什均衡,是对每个纯战略分配一个机率而形成的战略。混合战略允许玩家随机选择一个纯战略。混合战略纳什均衡中要用概率计算,达到某一概率时,可以实现支付最优。因为概率是连续的,所以即使战略集合是有限的,也会有无限多个混合战略。在这个游戏中,应该采用混合策略纳什均衡。假设我们出正面的概率是x,出反面的概率是1-x,美女出正面的概率是y,出反面的概率是1-y。为了使利益最大化,应该在对手出正面或反面的时候我们的收益都相等,即:3x + (-2)(1-x) = (-2) * x + 1*(1-x )解方程得x=3/8;同样,美女的收益:-3y + 2(1-y) = 2y+ (-1) * (1-y),解方程同样得y等于3/8。于是,我们就可以算美女每次的期望收益是:(1-y) * (2x-(1-x)) + y(-3x+2(1-x)) = 1/8元即双方都采取最优策略的情况下,美女平均每次赢1/8元。所以当然不能和她玩这个游戏。其实只要美女采取了(3/8, 5/8)这个方案,不论你采用什么方案,都是不能改变局面的。但是当你也采用最佳策略时,至少可以保证自己输得最少。否则,你会赔掉更多。参考:=============================================================作者主页:作者专栏主页:作者GitHub主页:欢迎大家拍砖、提意见。相互交流,共同进步!==============================================================","updated":"T11:41:33.000Z","canComment":false,"commentPermission":"anyone","commentCount":53,"collapsedCount":0,"likeCount":558,"state":"published","isLiked":false,"slug":"","lastestTipjarors":[{"isFollowed":false,"name":"马腾飞","headline":"無上正等正觉","avatarUrl":"/v2-c51a6bc98a6f7f77572d_s.jpg","isFollowing":false,"type":"people","slug":"ma-teng-fei-23-89","bio":"宏观交易员#佛学研习者#旅行家","hash":"1d3b1a5ff349c73993cf","uid":511100,"isOrg":false,"description":"無上正等正觉","profileUrl":"/people/ma-teng-fei-23-89","avatar":{"id":"v2-c51a6bc98a6f7f77572d","template":"/{id}_{size}.jpg"},"isOrgWhiteList":false},{"isFollowed":false,"name":"高大汉","headline":"","avatarUrl":"/1f0ca1a6a6b846bdb040_s.jpg","isFollowing":false,"type":"people","slug":"li-xiang-96-63-17","bio":"律师","hash":"aba3b958b6d5f01fb3f65","uid":163800,"isOrg":false,"description":"","profileUrl":"/people/li-xiang-96-63-17","avatar":{"id":"1f0ca1a6a6b846bdb040","template":"/{id}_{size}.jpg"},"isOrgWhiteList":false},{"isFollowed":false,"name":"李盈盈","headline":"","avatarUrl":"/v2-e51726fbf340b3df8c9acbf1_s.jpg","isFollowing":false,"type":"people","slug":"liyy","bio":"喜欢写代码的机械男","hash":"a551ba800ff7b68ff5677afe9a3fc944","uid":60,"isOrg":false,"description":"","profileUrl":"/people/liyy","avatar":{"id":"v2-e51726fbf340b3df8c9acbf1","template":"/{id}_{size}.jpg"},"isOrgWhiteList":false}],"isTitleImageFullScreen":false,"rating":"none","titleImage":"/v2-0a08c813ef9bbeb033c8f1f03f7c0103_r.jpg","links":{"comments":"/api/posts//comments"},"reviewers":[],"topics":[{"url":"/topic/","id":"","name":"博弈论"},{"url":"/topic/","id":"","name":"德州扑克"},{"url":"/topic/","id":"","name":"约翰·纳什(John Nash)"}],"adminClosedComment":false,"titleImageSize":{"width":640,"height":360},"href":"/api/posts/","excerptTitle":"","column":{"slug":"pythoner","name":"撸代码,学知识"},"tipjarState":"activated","tipjarTagLine":"真诚赞赏,手留余香","sourceUrl":"","pageCommentsCount":53,"tipjarorCount":3,"annotationAction":[],"hasPublishingDraft":false,"snapshotUrl":"","publishedTime":"T19:41:33+08:00","url":"/p/","lastestLikers":[{"bio":"学生","isFollowing":false,"hash":"126439fdddfa823f2bfeafc","uid":631400,"isOrg":false,"slug":"zhou-qing-59-82","isFollowed":false,"description":"","name":"周庆","profileUrl":"/people/zhou-qing-59-82","avatar":{"id":"ba","template":"/{id}_{size}.jpg"},"isOrgWhiteList":false},{"bio":null,"isFollowing":false,"hash":"b8b758d423","uid":083000,"isOrg":false,"slug":"lexiq","isFollowed":false,"description":"","name":"lexiq","profileUrl":"/people/lexiq","avatar":{"id":"v2-f80c9fc8bf8","template":"/{id}_{size}.jpg"},"isOrgWhiteList":false},{"bio":"貿易","isFollowing":false,"hash":"e38e88af8eb","uid":712100,"isOrg":false,"slug":"ger-ro-19-7","isFollowed":false,"description":"","name":"Roger","profileUrl":"/people/ger-ro-19-7","avatar":{"id":"da8e974dc","template":"/{id}_{size}.jpg"},"isOrgWhiteList":false},{"bio":"","isFollowing":false,"hash":"b9d92e4c0c16ceb766fd","uid":84,"isOrg":false,"slug":"liu-qi-tong-28","isFollowed":false,"description":"不要把星星摘给我,今生我只缺少黑暗,只缺少错上加错,今生只恨我不是恶魔。","name":"劉rita","profileUrl":"/people/liu-qi-tong-28","avatar":{"id":"v2-9c347b2ff9f76e09af58cf71b91fa55c","template":"/{id}_{size}.jpg"},"isOrgWhiteList":false},{"bio":"","isFollowing":false,"hash":"30120cbd8b661aeab93faf","uid":80,"isOrg":false,"slug":"shi-guang-70-93","isFollowed":false,"description":"","name":"时光","profileUrl":"/people/shi-guang-70-93","avatar":{"id":"v2-d91c716dcb578ef203dcce47f4603c28","template":"/{id}_{size}.jpg"},"isOrgWhiteList":false}],"summary":"喜欢玩德州扑克的人应该都听说过“GTO”这个词。GTO,即 GameTheory Optimal,翻译成中文应该叫做“游戏理论最优化”。直接翻译过来有点拗口,通俗一点的解释可以是:在游戏中,你可以采取一种最优策略,使得自己的损失最小,同时游戏中的对手也必须采取相…","reviewingCommentsCount":0,"meta":{"previous":{"isTitleImageFullScreen":false,"rating":"none","titleImage":"/v2-313f6d58de97e04ec829_r.jpg","links":{"comments":"/api/posts//comments"},"topics":[{"url":"/topic/","id":"","name":"数据可视化"},{"url":"/topic/","id":"","name":"大数据"},{"url":"/topic/","id":"","name":"数据分析"}],"adminClosedComment":false,"href":"/api/posts/","excerptTitle":"","author":{"bio":"Python爱好者,关注爬虫、数据分析、数据挖掘、数据可视化等","isFollowing":false,"hash":"890bef55fb","uid":405600,"isOrg":false,"slug":"xianhu","isFollowed":false,"description":"不想当产品的程序员不是好的数据分析师!","name":"笑虎","profileUrl":"/people/xianhu","avatar":{"id":"7e0dcfc42ad","template":"/{id}_{size}.jpg"},"isOrgWhiteList":false},"column":{"slug":"pythoner","name":"撸代码,学知识"},"content":"本文收集了各个平台各种行业的几十种数据可视化分析工具,让你不仅大饱眼福,而且还可以让你事半功倍。ExcelExcel作为一个入门级工具,是快速分析数据的理想工具,也能创建供内部使用的数据图,但是Excel在颜色、线条和样式上课选择的范围有限,这也意味着用Excel很难制作出能符合专业出版物和网站需要的数据图。Charting FontsCharting Fonts是将符号字体与字体整合(把符号变成字体),创建出漂亮的矢量化图标。GephiGephi是进行社会图谱数据可视化分析的工具,不但能处理大规模数据集并且Gephi是一个可视化的网络探索平台,用于构建动态的、分层的数据图表。CartoDBCartoDB是一个不可错过的网站,你可以用CartoDB很轻易就把表格数据和地图关联起来,这方面CartoDB是最优秀的选择。Google Chart APIGoogle Chart提供了一种非常完美的方式来可视化数据,提供了大量现成的图标类型,从简单的线图表到复杂的分层树地图等。它还内置了动画和用户交互控制。D3D3(Data Driven Documents)是支持SVG渲染的另一种JavaScript库。但是D3能够提供大量线性图和条形图之外的复杂图表样式,例如Voronoi图、树形图、圆形集群和单词云等。CrossfilterCrossfilter既是图表,又是互动图形用户界面的小程序,当你调整一个图表中的输入范围时,其他关联图表的数据也会随之改变。RaphaelRaphael是创建图表和图形的JavaScript库,与其他库最大的不同是输出格式仅限SVG和VML.如果你需要制作信息图而不仅仅是数据可视化,是最流行的一个选择。WekaWeka是一个能根据属性分类和集群大量数据的优秀工具,Weka不但是数据分析的强大工具,还能生成一些简单的图表。NodeBoxNodeBox是OS X上创建二维图形和可视化的应用程序,你需要了解Python程序,NodeBox与Processing类似,但没有Processing的互动功能。ProcessingProcessing是数据可视化的招牌工具。你只需要编写一些简单的代码,然后编译成Java。Processing可以在几乎所有平台上运行。LeafletLeaflet是一个开源的JavaScript库,用来开发移动友好地交互地图。OpenlayersOpenlayers可能是所有地图库中可靠性最高的一个。虽然文档注释并不完善。且学习曲线非常陡峭,但是对于特定的任务来说,Openlayers能够提供一些其他地图库都没有的特殊工具。PolyMapsPolyMaps是一个地图库,主要面向数据可视化用户。PolyMaps在地图风格化方面有独到之处,类似CSS样式表的选择器。TimelineTimeline即时间轴,用户通过这个工具可以一目了然的知道自己在何时做了什么。jsDraw2DXjsDraw2DX是一个标准的JavaScript库,用来创建任意类型的SVG交互式图形,可生成包括线、矩形、多边形、椭圆、弧线等图形。iChartsiCharts提供可一个用于创建并呈现引人注目图表的托管解决方案。有许多不同种类的图表可供选择,每种类型都完全可定制,以适合网站的主题。iCharts有交互元素,可以从Google Doc、Excel表单和其他来源中获取数据。Modest MapsModest Maps是一个轻量级、可扩展的、可定制的和免费的地图显示类库,这个类库能帮助开发人员在他们自己的项目里能够与地图进行交互。Many EyesMany Eyes是一个Web应用程序,用来创建、分享和讨论用户上传图形数据。AnychartAnychart是一个灵活的基于Flash/JavaScript(HTML5)的图表解决方案、跨浏览器、跨平台。除了图表功能外,它还有一款收费的交互式图表和仪表。KartographKartograph不需要任何地图提供者像Google Maps,用来建立互动式地图,由两个libraries组成,从空间数据开放格式,利用向量投影的Python library以及post GIS,并将两者结合到SVG和JavaScript library,并把这些SVG资料转变成互动性地图。Sigma.jsSigma.js是一个开源的轻量级库,用来显示交互式的静态和动态图表。Echarts经常使用开源软件的朋友应该很熟悉ECharts,大家都知道去年春节以及近期央视大规划报道的百度大数据产品,如百度迁徙、百度司南、百度大数据预测等等,这些产品的数据可视化均是通过ECharts来实现的。Zoho ReportsZoho Reports支持丰富的功能帮助不同的用户解决各种个性化需求,支持SQL查询、类四暗自表格界面等。Quantum GIS(QGIS)Quantum GIS(QDIS)是一个用户界面友好、开源代码的GIS客户端程序,支持数据的可视化、管理、编辑与分析和印刷地图的制作。Tableau PublicTableau Public是一款桌面可视化工具,用户可以创建自己的数据可视化,并将交互性数据可视化发布到网页上。Paper.jsPaper.js是一个开源向量图表叙述架构,能够在HTML5 Canvas 运作,对于初学者来说它是很容易学习的,其中也有很多专业面向可以提供中阶及高阶使用者。Dundas ChartDundas Chart处于行业领先地位的NET图表处理控件,于2009年被微软收购,并将图表产品的一部分功能集成到Visual Studio中。TimeFlowTimeFlow Analytical Timeline是为了暂时性资料的视觉化工具,现在有alpha版本因此有机会可以发现差错,提供以下不同的呈现方式:时间轴、日历、柱状图、表格等。GanttiGantti是一个开源的PHP类,帮助用户即时生成Gantti图表。使用Gantti创建图表无需使用JavaScript,纯HTML-CSS3实现。图表默认输出非常漂亮,但用户可以自定义样式进行输出(SASS样式表)。Smoothie ChartsSmoothie Charts是一个十分小的动态流数据图表路。通过推送一个webSocket来显示实时数据流。Smoothie Charts只支持Chorme和Safari浏览器,并且不支持刻印文字或饼图,它很擅长显示流媒体数据。FlotFlot是一个优秀的线框图表库,支持所有支持canvas的浏览器(目前主流的浏览器如火狐、IE、Chrome等都支持)。Pizza Pie ChartsPizza Pie Charts是个响应式饼图图表,基于Adobe Snap SVG框架,通过HTML标记和CSS来替代JavaScript对象,更容易集成各种先进的技术。Fusion Charts Suit XTFusion Charts Suit XT是一款跨平台、跨浏览器的JavaScript图表组件,为你提供令人愉悦的JavaScript图表体验。它是最全面的图表解决方案,包含90+图表类型和众多交互功能,包括3D、各种仪表、工具提示、向下钻取、缩放和滚动等。它拥有完整的文档以及现成的演示,可以帮助你快速创建图表。ProtovisProtovis是一个可视化JavaScript图表生成工具。Arbor.JsArbor.Js提供有效率、以力导向的版面配置演算法,抽象画图表组织以及筛选更新的处理。Highchart.jsHighchart.js是单纯由JavaScript所写的图表资料库,提供简单的方法来增加互动性图表来表达你的网站或网站应用程式。目前它能支援线图、样条函数图。CircosCircos最初主要用于基因组序列相关数据的可视化,目前已应用于多个领域,例如:影视作品中的人物关系分析,物流公司的订单来源和流向分析等,大多数关系型数据都可以尝试用Circos来可视化。BirdEyeBirdEye是Decearative Visual Analytics,它属于一个群体专案,为了要提升设计和广泛的开源资料视觉化发展,并且为了Adobe Flex建视觉分析图库,这个动作以叙述性的资料库为主,让使用者能够建立多元资料视觉化界面来分析以及呈现资讯。Visualize FreeVisualize Free是一个建立在高阶商业后台集游InetScoft开发的视觉化软体免费的视觉分析工具,可从多元变量资料筛选并看其趋势,或是利用简单地点及方法来切割资料或是小范围的资料。OpenStreetMapOpenStreetMap是一个世界地图,由像您一样的人们所构筑,可依据开放协议自由使用。OpenHeatMapOpenHeatMap简单易用,用户可以用它上传数据、创建地图、交流信息。它可以把数据(如Google Spreadsheet的表单)转化为交互式的地图应用,并在网上分享。GeoCommonsGeoCommons可以使用户构建富交互可视化应用来解决问题,即使他们没有任何传统地图使用经验。你可以将实社会化数据或者GeoCommons保存的超5万份开源数据在地图上可视化,创造带交互的可视化分析作品,并将作品嵌入网站、博客或分享到社交网络上。转载自微信公众号:=============================================================作者主页:作者专栏主页:作者GitHub主页:欢迎大家拍砖、提意见。相互交流,共同进步!==============================================================","state":"published","sourceUrl":"","pageCommentsCount":0,"canComment":false,"snapshotUrl":"","slug":,"publishedTime":"T13:55:04+08:00","url":"/p/","title":"(转载)数据可视化分析工具汇总","summary":"本文收集了各个平台各种行业的几十种数据可视化分析工具,让你不仅大饱眼福,而且还可以让你事半功倍。ExcelExcel作为一个入门级工具,是快速分析数据的理想工具,也能创建供内部使用的数据图,但是Excel在颜色、线条和样式上课选择的范围有限,这也意味着…","reviewingCommentsCount":0,"meta":{"previous":null,"next":null},"commentPermission":"anyone","commentsCount":57,"likesCount":2577},"next":{"isTitleImageFullScreen":false,"rating":"none","titleImage":"/v2-7cc8de70455e3afc97fbccad13ebe7a8_r.jpg","links":{"comments":"/api/posts//comments"},"topics":[{"url":"/topic/","id":"","name":"爬虫 (计算机网络)"},{"url":"/topic/","id":"","name":"数据分析"},{"url":"/topic/","id":"","name":"Redis"}],"adminClosedComment":false,"href":"/api/posts/","excerptTitle":"","author":{"bio":"Python爱好者,关注爬虫、数据分析、数据挖掘、数据可视化等","isFollowing":false,"hash":"890bef55fb","uid":405600,"isOrg":false,"slug":"xianhu","isFollowed":false,"description":"不想当产品的程序员不是好的数据分析师!","name":"笑虎","profileUrl":"/people/xianhu","avatar":{"id":"7e0dcfc42ad","template":"/{id}_{size}.jpg"},"isOrgWhiteList":false},"column":{"slug":"pythoner","name":"撸代码,学知识"},"content":"本篇文章属于进阶知识,可能会用到以前出现在专栏文章中的知识,如果你是第一次关注本专栏,建议你先阅读下其他文章:现在搞爬虫的人,可能被问的最多的问题就是“你会不会分布式爬虫?”。给人的感觉就是你不会分布式爬虫,都不好意思说自己是搞爬虫的。但其实分布式爬虫的原理比较简单,大多数的业务用不到分布式模式。所谓的分布式爬虫,就是多台机器合作进行爬虫工作,提高工作效率。分布式爬虫需要考虑的问题有:(1)如何从一个统一的接口获取待抓取的URL?(2)如何保证多台机器之间的排重操作?即保证不会出现多台机器同时抓取同一个URL。(3)当多台机器中的一台或者几台挂掉,如何保证任务继续,且数据不会丢失?这里首先利用Redis数据库解决前两个问题。Redis数据库是一种key-value数据库,它本身包含了一些比较好的特性,比较适合解决分布式爬虫的问题。关于Redis的一些基本概念、操作等,建议读者自行百度。我们这里使用到Redis中自带的“消息队列”,来解决分布式爬虫问题。具体实现步骤如下:在Redis中初始化两条key-value数据,对应的key分别为spider.wait和spider.all。spider.wait的value是一个list队列,存放我们待抓取的URL。该数据类型方便我们实现消息队列。我们使用lpush操作添加URL数据,同时使用brpop监听并获取取URL数据。spider.all的value是一个set集合,存放我们所有待抓取和已抓取的URL。该数据类型方便我们实现排重操作。我们使用sadd操作添加数据。在我的代码中,我是在原来爬虫框架的基础上,添加了分布式爬虫模式(一个文件),该文件的代码行数大概在100行左右,所以文章标题为“百行代码”。但实际上,在每台客户端机器上,我都使用了多线程爬虫框架。即:(1)每台机器从Redis获取待抓取的URL,执行“抓取--解析--保存”的过程(2)每台机器本身使用多线程爬虫模式,即有多个线程同时从Redis获取URL并抓取(3)每台机器解析数据得到的新的URL,会传回Redis数据库,同时保证数据一致性(4)每台机器单独启动自己的爬虫,之后单独关闭爬虫任务,没有自动功能具体可查看代码:这里的代码还不够完善,主要还要如下的问题:抓取的数据如何统一汇总。解决方法:可以统一保存到某个数据库如何解决第3个问题,即当某台机器挂掉,如何保证数据不丢失如何自动启动、关闭分布式爬虫有兴趣解决问题的,可以fork代码之后,自行修改,并提交pull-requests。=============================================================作者主页:作者专栏主页:作者GitHub主页:欢迎大家拍砖、提意见。相互交流,共同进步!==============================================================","state":"published","sourceUrl":"","pageCommentsCount":0,"canComment":false,"snapshotUrl":"","slug":,"publishedTime":"T16:54:30+08:00","url":"/p/","title":"“百行代码”实现简单的Python分布式爬虫","summary":"本篇文章属于进阶知识,可能会用到以前出现在专栏文章中的知识,如果你是第一次关注本专栏,建议你先阅读下其他文章:现在搞爬虫的人,可能被问的最多的问题就是“你会不会分布式爬虫?”。给人的感觉就是你不会分布式爬虫,都不好…","reviewingCommentsCount":0,"meta":{"previous":null,"next":null},"commentPermission":"anyone","commentsCount":12,"likesCount":283}},"annotationDetail":null,"commentsCount":53,"likesCount":558,"FULLINFO":true}},"User":{"xianhu":{"isFollowed":false,"name":"笑虎","headline":"不想当产品的程序员不是好的数据分析师!","avatarUrl":"/7e0dcfc42ad_s.jpg","isFollowing":false,"type":"people","slug":"xianhu","bio":"Python爱好者,关注爬虫、数据分析、数据挖掘、数据可视化等","hash":"890bef55fb","uid":405600,"isOrg":false,"description":"不想当产品的程序员不是好的数据分析师!","profileUrl":"/people/xianhu","avatar":{"id":"7e0dcfc42ad","template":"/{id}_{size}.jpg"},"isOrgWhiteList":false,"badge":{"identity":null,"bestAnswerer":null}}},"Comment":{},"favlists":{}},"me":{},"global":{},"columns":{"next":{},"pythoner":{"following":false,"canManage":false,"href":"/api/columns/pythoner","name":"撸代码,学知识","creator":{"slug":"xianhu"},"url":"/pythoner","slug":"pythoner","avatar":{"id":"v2-cccb96707c47bdf","template":"/{id}_{size}.jpg"}}},"columnPosts":{},"columnSettings":{"colomnAuthor":[],"uploadAvatarDetails":"","contributeRequests":[],"contributeRequestsTotalCount":0,"inviteAuthor":""},"postComments":{},"postReviewComments":{"comments":[],"newComments":[],"hasMore":true},"favlistsByUser":{},"favlistRelations":{},"promotions":{},"switches":{"couldAddVideo":false},"draft":{"titleImage":"","titleImageSize":{},"isTitleImageFullScreen":false,"canTitleImageFullScreen":false,"title":"","titleImageUploading":false,"error":"","content":"","draftLoading":false,"globalLoading":false,"pendingVideo":{"resource":null,"error":null}},"drafts":{"draftsList":[],"next":{}},"config":{"userNotBindPhoneTipString":{}},"recommendPosts":{"articleRecommendations":[],"columnRecommendations":[]},"env":{"isAppView":false,"appViewConfig":{"content_padding_top":128,"content_padding_bottom":56,"content_padding_left":16,"content_padding_right":16,"title_font_size":22,"body_font_size":16,"is_dark_theme":false,"can_auto_load_image":true,"app_info":"OS=iOS"},"isApp":false},"sys":{}}

我要回帖

更多关于 零和博弈的纳什均衡 的文章

 

随机推荐