当前位置: 首页 > news >正文

photoshop 做网站做公司 网站

photoshop 做网站,做公司 网站,专业网站建设专家,企业培训考试系统官网Mika 来源 | 头图 |CSDN自东方IC今天教大家用Python预测英雄联盟比赛胜负。Show me data#xff0c;用数据说话今天我们聊一聊 Python预测LOL胜负目前#xff0c;英雄联盟S10全球总决赛正在火热进行中#xff0c;最终决赛于10月31日在浦东足球场举行。作为当下最火热的电竞赛…Mika 来源 | 头图 |CSDN自东方IC今天教大家用Python预测英雄联盟比赛胜负。Show me data用数据说话今天我们聊一聊 Python预测LOL胜负目前英雄联盟S10全球总决赛正在火热进行中最终决赛于10月31日在浦东足球场举行。作为当下最火热的电竞赛事这点燃了全球无数玩家的关注相信没有哪个英雄联盟玩家会错过这场受众超广、影响力超大的国际电竞赛事。LPL究竟能否在家门口拿下第三座世界赛奖杯也成了许多玩家关注的话题。对于每场比赛大家最关注的莫过于最后的胜负了那么比赛的胜负能否可以预测呢今天我们就分析了5万多场英雄联盟的排名比赛教你如何用Python预测比赛胜负。项目介绍英雄联盟(LOL)是美国游戏开发商Riot Games2011年由腾讯收购开发和发行的一款多人在线战斗竞技游戏。 在游戏中玩家扮演一个召唤师角色每个召唤师控制一个拥有独特技能的英雄并与一组其他玩家或电脑控制的英雄战斗。游戏的目标是摧毁对方的防御塔和基地。 召唤者峡谷是英雄联盟中最受欢迎的地图在这种地图类型中两队五名玩家竞争摧毁一个被称为基地的敌人建筑这个建筑由敌人的队伍和一些防御塔护卫。每个队伍都希望保卫自己的建筑同时摧毁对方的建筑。这些主要包括:Towers防御塔每支队伍总共有11座防御塔Inhibitor水晶每条道有一个水晶Elemental Drakes/Elder Dragon大龙/远古龙Rift Herald峡谷先锋Baron Nasho纳什男爵Nexus基地英雄联盟最具争议的元素之一就是其严重的滚雪球效应。许多职业选手接受赛后采访时都提到其输赢都因为“滚雪球”我们研究各方面各指标的数据来看这些因素的发展是否真的影响了比赛的成败。 在这个项目中我们分析了5万多场英雄联盟的排名比赛并尝试使用决策树算法来根据已有输入属性预测比赛胜负。数据集概述数据集收集了超过50000个从游戏英雄联盟排位游戏的数据字段主要包含以下数据Game ID游戏ID Creation Time创建时间 Game Duration (in seconds)游戏持续时间秒 Season ID赛季ID Winner (1team1, 2team2)获胜队伍 First Baron, dragon, tower, blood, inhibitor and Rift Herald (1 team1, 2 team2, 0 none)第一条纳什男爵大龙塔一血水晶峡谷先锋 Champions and summoner spells for each team (Stored as Riots champion and summoner spell IDs)每只队伍选择的英雄和召唤术 The number of tower, inhibitor, Baron, dragon and Rift Herald kills each team has塔水晶男爵大龙和峡谷先锋击杀数 The 5 bans of each team (Again, champion IDs are used)每个队伍的禁用英雄数据读入和预览首先导入所需包和读入数据集。 # 数据整理 import numpy as np import pandas as pd # 可视化 import matplotlib.pyplot as plt import seaborn as sns import plotly as py import plotly.graph_objs as go # 建模 from sklearn.tree import DecisionTreeClassifier from sklearn.model_selection import train_test_split, GridSearchCV from sklearn.metrics import confusion_matrix, classification_report # 读入数据 df pd.read_csv(./archive/games.csv) df.head()df.shape (51490, 61)数据可视化我们将分别对影响比赛的相关因素进行如下探索 1. 目标变量分查看更多精彩图片数据集一共有51490条记录其中1队获胜的次数为26077次占比50.6%2队获胜的次数为25413次占比49.4%。不存在样本不平衡的情况。 代码 # 饼图 trace0 go.Pie(labelsdf[winner].value_counts().index, valuesdf[winner].value_counts().values, hole0.5, opacity0.9, markerdict(linedict(colorwhite, width1.3)) ) layout go.Layout(title目标变量winner分布) data [trace0] fig go.Figure(data, layout) py.offline.plot(fig, filename./html/整体获胜情况分布.html) 2. 游戏时长分布查看更多精彩图片从直方图可以看出游戏时长大致服从正态分布其中最短的游戏时长为3分钟3分钟是游戏重开的时间点最长的游戏时长是79分钟。中间50%的时长在26~36分钟之间。 代码 df[game_duration] round(df[gameDuration] / 60) # 选择数据 x1 df[ df[winner ] 1][game_duration] x2 df[ df[winner ] 2][game_duration] # 直方图 trace0 go.Histogram(xx1, bingroup25, nameteam1, opacity0.9) trace1 go.Histogram(xx2, bingroup25, nameteam2, opacity0.9) layout go.Layout(title比赛游戏时长分布) data [trace0, trace1] fig go.Figure(data, layout) py.offline.plot(fig, filename./html/游戏时长分布.html) 3. 一血对获胜的影响 查看更多精彩图片获得一血的队伍胜率相对较高在第一队的比赛中首先获得一血时的胜率为59.48%相较未获得一血的比赛高18%。在第二队的比赛中获得一血时的胜率为58.72%相较未获得一血的比赛高18%。 代码 plot_bar_horizontal(input_col firstBlood ,target_col winner ,title_name 一血对获胜的影响 ) 4. 一塔对获胜的影响 查看更多精彩图片从数据来看第一个防御塔看起来是比较有说服力的指标。在第一队的比赛中首先摧毁一塔时队伍的胜率高达70.84%相较未获得一塔的比赛高41.64%。在第二队的比赛中有相近的数据表现。 代码 plot_bar_horizontal(input_col firstTower , target_col winner , title_name 一塔对获胜的影响 ) 5. 摧毁第一个水晶对获胜的影响查看更多精彩图片在比赛中拿到第一座水晶塔的队伍91%的情况下可以获胜这一点在某种程度上是可以预见的因为首先摧毁水晶塔代表队伍已经积累的足够的优势而且水晶塔力量很强大并且更具有价值。 代码 plot_bar_horizontal(input_col firstInhibitor ,target_col winner ,title_name 摧毁第一个水晶对获胜的影响 ) 6. 击杀第一条男爵对获胜影响查看更多精彩图片统计数据显示在比赛中击杀第一条男爵有80%的胜率。 plot_bar_horizontal(input_col firstBaron , target_col winner , title_name 击杀第一条男爵对获胜影响 ) 7. 击杀第一条大龙对获胜的影响 查看更多精彩图片在第一个队伍中首先击杀第一条大龙的队伍胜率在68.6%相较未取得优先的比赛胜率高36%。 plot_bar_horizontal(input_col firstDragon ,target_col winner ,title_name 击杀第一条大龙对获胜的影响 ) 8. 击杀第一条峡谷先锋对获胜的影响 查看更多精彩图片在第一个队伍中首先击杀第一条峡谷先锋的队伍胜率在69.45%相较未取得优先的比赛胜率高38.92%。 plot_bar_horizontal(input_colfirstRiftHerald, target_colwinner, title_name击杀第一条峡谷先锋对获胜的影响) 9. 摧毁防御塔数对获胜影响查看更多精彩图片选择第一个队伍的摧毁防御塔数作为影响因素可以看出摧毁的防御塔数量越多获胜的概率越大。当数量大于8个时胜率大于85%。11个防御塔全部摧毁时的胜率为99.16%当然也有8.4‰的翻盘概率。 plot_bar_vertical(input_colt1_towerKills, target_colwinner, title_name摧毁防御塔数对获胜影响) 10. 摧毁水晶数对获胜影响 查看更多精彩图片摧毁水晶的数目越多获胜的概率越大。没有摧毁水晶的获胜概率为12.55%摧毁一个的获胜概率为81.11%两个为92.38%。 plot_bar_vertical(input_colt1_inhibitorKills, target_colwinner, title_name摧毁水晶数对获胜影响) 11. 击杀男爵数对获胜影响 查看更多精彩图片击杀男爵数越多获胜的概率越大击杀5条男爵的数据仅有一条后续需要删除。 plot_bar_vertical(input_colt1_baronKills, target_colwinner, title_name击杀男爵数对获胜影响) 12. 击杀大龙数对获胜影响 查看更多精彩图片击杀大龙数数越多获胜的概率越大 plot_bar_vertical(input_col t1_dragonKills , target_col winner , title_name 击杀大龙数对获胜影响 )并筛选建模所需变量。 # 删除时间少于15分钟和分类数较少的记录 df df[(df[gameDuration] 900)(df[t1_baronKills] ! 5)] print(df.shape) (50180,62) # 筛选建模变量 df_model df[[winner, firstBlood, firstTower, firstInhibitor, firstBaron, firstDragon, firstRiftHerald, t1_towerKills, t1_inhibitorKills,t1_baronKills, t1_dragonKills, t2_towerKills, t2_inhibitorKills, t2_baronKills, t2_dragonKills ]] df_model.head()采用分层抽样方法划分80%数据为训练集20%数据为测试集。 # 划分训练集和测试集 x df_model.drop(winner, axis1) y df_model[winner] X_train, X_test, y_train, y_test train_test_split(x, y, test_size0.2, stratifyy, random_state0) print(X_train.shape, X_test.shape, y_train.shape, y_test.shape) (40144, 14) (10036, 14) (40144,) (10036,) 使用决策树算法建模使用GridSearchCV进行参数调优。 # 参数 parameters { splitter : ( best , random ), criterion :( gini , entropy ), max_depth :[*range(1, 20, 2)], } # 建立模型 clf DecisionTreeClassifier(random_state0) GS GridSearchCV(clf, parameters, cv10) GS.fit(X_train, y_train) GridSearchCV(cv 10 , estimatorDecisionTreeClassifier(random_state 0 ), param_grid{ criterion : ( gini , entropy ), max_depth : [ 1 , 3 , 5 , 7 , 9 , 11 , 13 , 15 , 17 , 19 ], splitter : ( best , random )}) # 输出最佳得分 print(best score: , GS.best_score_) print(best param: , GS.best_params_) bestscore:0.9770077890521407 bestparam:{criterion:gini,max_depth:7,splitter:best} #最佳模型 best_clfDecisionTreeClassifier(criteriongini,max_depth7,splitterbest) best_clf.fit(X_train,y_train) print(score:,best_clf.score(X_test,y_test)) score: 0.9799721004384216 使用最优的模型重新评估测试数据集效果 # 输出分类报告 y_pred best_clf.predict(X_test) cm confusion_matrix(y_test, y_pred) cr classification_report(y_test, y_pred) print(Classificationreport:n,cr) Classification report : precision recall f1-score support 1 0 .98 0 .98 0 .98 5077 2 0 .98 0 .98 0 .98 4959 accuracy 0 .98 10036 macro avg 0 .98 0 .98 0 .98 10036 weighted avg 0 .98 0 .98 0 .98 10036 # 热力图 g1 sns.heatmap(cm, annot True , fmt .1f , cmap flag , linewidths 0.2 , cbar False ) g1.set_ylabel( y_true , fontdict{ fontsize : 15 }) g1.set_xlabel( y_pred , fontdict{ fontsize : 15 }) g1.set_title( confusion_matrix ,fontdict{ fontsize : 15 }) Text( 0.5 , 1 , confusion_matrix ) imp pd.DataFrame( list (zip(X_train.columns, best_clf.feature_importances_))) imp.columns [ columns , importances ] imp imp.sort_values( importances , ascending False ) imp击杀防御塔数量的重要性最高其次是水晶摧毁数量、一塔、击杀龙的数量。 以下代码用于输出这颗树 # 可视化 import graphviz from sklearn import tree dot_data tree.export_graphviz(decision_treebest_clf, max_depth3, out_file None, feature_names X_train.columns, class_names [1, 2], filled True, rounded True ) graph graphviz.Source(dot_data) graph打开UC浏览器 查看更多精彩图片模型预测 我们假设: 第一队拿了第一血第一塔第一男爵第一条大龙和第一峡谷先锋而第二队只拿了第一个水晶。 第一队的塔水晶男爵和龙杀死的数量分别是10,2,1,4和塔水晶男爵和龙的数量分别是7,2,1,1。 # 新数据 new_data [[1, 1, 2, 1, 1, 1, 10, 2, 1, 4, 7, 2, 1, 1]] c best_clf.predict_proba(new_data).reshape(-1, 1) print( winner is : , best_clf.predict(x1)) print( First team win probability is % , list(c[0] * 100), nSecond team win probability is %: ,list(c[1] * 100)) winner is : [ 1 ] First team win probability is % [ 89.87341772151899 ] Second team win probability is %: [ 10.126582278481013 ] 根据模型预测结果第一队将会获胜获胜的概率为89.87%。你想学习python请点关注波妞带你不迷路。下方免费获取代码质料,成为你想要的python大神Python学习教程​g.lgcoder.com
http://wiki.neutronadmin.com/news/300161/

相关文章:

  • 做美工的网站网络销售是做什么的
  • 银川网站制作小白如何搭建一个网站
  • 一流的郑州网站建设做冷冻食品的网站
  • 蔺市网站建设wordpress audio player 下载
  • 网站的titlewordpress关闭插件
  • 盐城手机网站制作phpcms wordpress
  • 唯品会一家专门做特卖的网站手机版舒城县重点工程建设局网站
  • 邯郸建网站公司网站编辑器无法显示
  • 网站建设 招标任务书黄骅贴吧的最新消息
  • 网站开发用linux做学校网站的目的
  • 做非法集资资讯的网站网站ui设计例子
  • 网站建设相关费用预算推广硬件开发是什么意思
  • 深圳网站公司网站建设科技公司有哪些
  • pc端网站怎么做自适应wordpress中文注册插件
  • 青岛网站搜索排名做网站版权怎么写
  • 做游戏网站需要哪些许可又拍网站怎么做的
  • 厦门集团网站设计公司安装wordpress 空白页
  • 如何搭建门户网站做网站公司如何选
  • 怎么做纯文本网站火锅网站建设
  • 营销推广网站建设破解要钱网站
  • 湘潭网站外包公司贵州小城镇建设网站
  • 定制化网站开发公司如何建设淘宝网站首页
  • 优化网站要怎么做广告传媒公司名称
  • 做网站工作内容市场营销说白了就是干什么的
  • 便宜高端网站设计下载站推广
  • flash 网站管理系统国内 wordpress主题
  • 哪个网站能查是否做股东济南协会网站设计团队
  • 江川区住房和城乡建设局网站dw如何做网站界面
  • 企业是如何做电子商务网站浙江建设局图审网站
  • 手机版网站开发教程wordpress迁移跳转原网站