用Python抓取并分析了1982场英雄联盟数据,教你开局前预测游戏对局胜负!
英雄联盟想必大多数读者不会陌生,这是一款来自拳头,由腾讯代理的大型网络游戏,现在一进网吧,你就能发现一大片玩英雄联盟的人。在2017年中国战队无缘鸟巢的世界总决赛后,一大片人选择了弃游,只是终究没躲过“真香定理”,在2018年的中旬,又有大批战友又回到熟悉的召唤师峡谷战场,时至今日,英雄联盟已经不仅仅是一款游戏,一个电竞项目了,它已经成为了我们生活的快乐源泉了。
问君能有几多愁,辅助闪现抢人头;问君能有几多愁,卡牌千里送人头。问君能有几多愁,皇子开大关队友;清明时节雨纷纷,各种队友各种坑。别人笑我不买眼,我笑别人浪费钱;孤帆远影碧空尽,草丛惊现蛮易信 。相见时难别亦难,碰见赵信菊花残;我自横刀向天笑,剁人只需用三刀。苦练盲僧千百次, 盲目对战N 多次;战输不下五十次, 砸得鼠标要出事;举杯邀明月,草丛遇盖伦。
鉴于现在喜欢英雄联盟的大佬如此之多,为了帮助大家尽快的拿到首胜,小编爬取并分析了1982余场LOL数据。非常神奇的是!在开局之前能够高概率的预测本局的胜负!让你提前做好心理准备。
假设
假设没有王者等大神代玩小号
假设没有代练
假设没有因为半途被媳妇抓到而挂机的行为
假设没有突然掉网连不上去的行为
游戏对战数据获取
国服:腾讯游戏平台非官方API - http://www.games-cube.com/
外服:Riot开发者平台API- https://developer.riotgames.com/
import numpy as np
import pymysql, random, json
def connect_db(database):
try:
conn = pymysql.connect(host='localhost', port=, user='root', password='zandaoguang', db=database, charset='utf8')
return conn
except:
print ('Exception: MySQL Connection')
return None
分析和训练数据
利用神经网络(neural_network)、随机森林(random_forest)和支持向量机(support_vector)等若干智能算法进行训练和回归,最终进行比较效果。
下面为神经网络部分代码:
from __future__ import print_function
import numpy as np
#np.random.seed() # for reproducibility
from keras.datasets import mnist
from keras.models import Sequential, load_model
from keras.layers import Dense, Dropout, Activation, Flatten
from keras.layers import Convolution2D, MaxPooling2D
from keras.utils import np_utils
from keras import backend as K
from keras.optimizers import SGD, Adam, RMSprop
import gzip
import sys
from six.moves import cPickle
from fetcher import *
batch_size =
nb_classes =
nb_epoch =
champion_dict = fetch_champion_dict("champion136.json")
champion_num = len(champion_dict)
X_train = X_train.astype('int8')
X_test = X_test.astype('int8')
print('X_train shape:', X_train.shape)
print(X_train.shape[], 'train samples')
print(X_test.shape[], 'test samples')
Y_train = np_utils.to_categorical(y_train, nb_classes)
Y_test = np_utils.to_categorical(y_test, nb_classes)
model = Sequential()
model.add(Dense(, input_dim = champion_num, init='uniform'))
model.add(Activation('sigmoid'))
model.add(Dense())
model.add(Activation('softmax'))
model.summary()
model.compile(loss='categorical_crossentropy',
optimizer=RMSprop(),
metrics=['accuracy'])
history = model.fit(X_train, Y_train,
batch_size=batch_size, nb_epoch=nb_epoch,
verbose=, validation_data=(X_test, Y_test))
score = model.evaluate(X_test, Y_test, verbose=)
print('Test score:', score[])
print('Test accuracy:', score[])
随机森林代码:
from sklearn.ensemble import RandomForestClassifier
from sklearn.externals import joblib
from fetcher import *
champion_dict = fetch_champion_dict("champion136.json")
champion_num = len(champion_dict)
X_train, y_train, X_test, y_test = fetch_one_side_riot('', 'MATCHED_GAME', 'KING_PORO', 'KINGPORO', ('', ''), champion_dict)
clf = RandomForestClassifier(n_estimators=, n_jobs=)
clf.fit(X_train, y_train)
train_score = clf.score(X_train, y_train)
print ("Train Score = "+str(train_score))
test_score = clf.score(X_test, y_test)
print ("Test Score = "+str(test_score))
支持向量机代码:
from sklearn.externals import joblib
from sklearn import svm
from fetcher import *
champion_dict = fetch_champion_dict("champion136.json")
champion_num = len(champion_dict)
X_train, y_train, X_test, y_test = fetch_one_side_riot('', 'MATCHED_GAME', 'ARAM_UNRANKED_5x5', 'ARAM', ('', ''), champion_dict)
clf = svm.SVC()
clf.fit(X_train, y_train)
train_score = clf.score(X_train, y_train)
print ("Train Score = "+str(train_score))
test_score = clf.score(X_test, y_test)
print ("Test Score = "+str(test_score))
游戏对战胜负预测
根据双方英雄阵容,预测获胜方的准确率(%)
PS:由于阿广近期没有玩英雄联盟,所以分析的数据为2017年的游戏数据。
只根据本方英雄阵容,预测本方能否获胜的准确率(%)
期望研究的问题
- LOL中游戏胜利是否与能性别有关?
- LOL的胜率是否和每天的时间段有关系?
- 在女朋友阻止自己玩游戏的情况下,LOL的胜率下降多少?如何解决?
注:由于数据量太小,以后能收集到更多的数据,是希望可以对上面以及更多的方向进行研究。
结论
- LOL取得最后胜利的三个重要因素为:团队阵容、团队水平,配合默契度。
- 合理的分配BUFF也是游戏胜利的必要因素。
- 打游戏的心态也是游戏胜利一个不可或缺的条件。
结语:
虽然我们通过机器学习算法可以预测这把的输赢,但是这毕竟不是我们最后的结果。玩英雄联盟和爱情类似,明明知道是我们不可能,却坚持去追求,这正是爱的美丽。也许没有什么结果,可那过程本身的美丽便足够用一生去品味。
游戏本来的用意是给大家放松心情,释放压力的(职业选手就不同了)。所以我们一定要把握好时间,对于沉迷游戏这种的就大可不必了,好的游戏应该是带给我们快乐,假如天天沉迷游戏,堕落不已,那就落入了错误的深渊了。当然好的方面也不是没有,看厂长、UZI这些选手就是好的代表啊!以上就是本文的全部内容,喜欢的小伙伴点个赞呗!
写在最后:
本文来自网络,如有侵权,请联系小编删除!
用Python抓取并分析了1982场英雄联盟数据,教你开局前预测游戏对局胜负!的更多相关文章
- 使用python抓取并分析数据—链家网(requests+BeautifulSoup)(转)
本篇文章是使用python抓取数据的第一篇,使用requests+BeautifulSoup的方法对页面进行抓取和数据提取.通过使用requests库对链家网二手房列表页进行抓取,通过Beautifu ...
- 关于python抓取google搜索结果的若干问题
关于python抓取google搜索结果的若干问题 前一段时间一直在研究如何用python抓取搜索引擎结果,在实现的过程中遇到了很多的问题,我把我遇到的问题都记录下来,希望以后遇到同样问题的童 ...
- python抓取知乎热榜
知乎热榜讨论话题,https://www.zhihu.com/hot,本文用python抓取下来分析 #!/usr/bin/python # -*- coding: UTF-8 -*- from ur ...
- python抓取网页例子
python抓取网页例子 最近在学习python,刚刚完成了一个网页抓取的例子,通过python抓取全世界所有的学校以及学院的数据,并存为xml文件.数据源是人人网. 因为刚学习python,写的代码 ...
- NetCloud——一个网易云音乐评论抓取和分析的Python库
在17的四月份,我曾经写了一篇关于网易云音乐爬虫的文章,还写了一篇关于评论数据可视化的文章.在这大半年的时间里,有时会有一些朋友给我发私信询问一些关于代码方面的问题.所以我最近抽空干脆将原来的代码整理 ...
- 使用Python抓取猫眼近10万条评论并分析
<一出好戏>讲述人性,使用Python抓取猫眼近10万条评论并分析,一起揭秘“这出好戏”到底如何? 黄渤首次导演的电影<一出好戏>自8月10日在全国上映,至今已有10天,其主演 ...
- 吴裕雄--天生自然python学习笔记:WEB数据抓取与分析
Web 数据抓取技术具有非常巨大的应用需求及价值, 用 Python 在网页上收集数据,不仅抓取数据的操作简单, 而且其数据分析功能也十分强大. 通过 Python 的时lib 组件中的 urlpar ...
- 使用 Python 抓取欧洲足球联赛数据
Web Scraping在大数据时代,一切都要用数据来说话,大数据处理的过程一般需要经过以下的几个步骤 数据的采集和获取 数据的清洗,抽取,变形和装载 数据的分析,探索和预测 ...
- Python抓取百度百科数据
前言 本文整理自慕课网<Python开发简单爬虫>,将会记录爬取百度百科"python"词条相关页面的整个过程. 抓取策略 确定目标:确定抓取哪个网站的哪些页面的哪部分 ...
随机推荐
- 命令行 IRC 客户端 irssi 的基本操作
登录与退出 启动 irssi $ irssi 登陆 IRC 服务器/connect server port 修改昵称/nick nickname 直接带昵称登录指定的服务器$ irssi -c [se ...
- C#入门笔记3 表达式及运算符2
关系运算符,也称布尔比较运算符 注:var1为bool类型,var2与var3可以是其它类型.[数据类型看下一节] 运算符 类别 示例表达式 结果说明 == 二元 var1=var2==var3 如果 ...
- hystrix 应用问题
1.问题总结, 如果项目中使用了ThreadLocal,注意hystix创建新线程时,ThreadLocal中存的是之前线程中的数据,在hystix线程中获取不到 2.问题 throwable异常参数 ...
- God made relatives.Thank God we can choose our friends.
God made relatives.Thank God we can choose our friends. 神决定了谁是你的亲戚, 幸运的是在选择朋友方面他给了你留了余地
- 零基础逆向工程17_PE结构01_PE头解析_手动
PE文件的两种状态 1.在硬盘中 节省硬盘空间 硬盘对齐 内存对齐 2.在内存中 3.PE磁盘文件与内存映像结构图 PE文件为什么要分节 -- 手动解析:PE文件 分析软件:飞鸽传书http://ww ...
- Linux环境下mysql的root密码忘记解决方法(2种)
方法一: 1.首先确认服务器出于安全的状态,也就是没有人能够任意地连接MySQL数据库. 因为在重新设置MySQL的root密码的期间,MySQL数据库完全出于没有密码保护的 状态下,其他的用户也可以 ...
- GetRelativePath获取相对路径
public static string GetRelativePath(string baseDirPath, string subFullPath) { // ForceBasePath to a ...
- jquery.restrictFieldLength.js
1.参考资料 http://www.cnblogs.com/aarond/archive/2013/08/02/3234042.html 2.使用举例 //字符控制 $(function () { $ ...
- noip模拟赛#14
#14: T1:f[x]=x-1(x&1)||x/2(x&1=0) 求[n,m]有多少个数可以通过变换得到k.(1e9). =>好像cf上看过类似的题,用二进制的方式来写.不过我 ...
- Python-OpenCV中的filter2D()函数
使用自定义内核对图像进行卷积.该功能将任意线性滤波器应用于图像.支持就地操作.当光圈部分位于图像外部时,该功能会根据指定的边框模式插入异常像素值. 语法 函数原型: dst=cv.filter2D(s ...