Комментарии, вопросы, пожелания приветствуются.
Буду рад ответить на ваши вопросы: alimbekovr@hotmail.com.

Датасет исторических данных про-игроков в StarCraft 2

Я немного увлекаюсь игрой в StarCraft 2 (Лига алмаз, расса — зерг), а сейчас так же увлекся анализом данных и алгоритмами машинного обучения. Решил почему бы не соединить два увлечения и не попробовать сделать что нибудь интересное. Итогом получился датасет исторических данных про-игроков в StarCraft 2. Данные взяты с сайта — aligulac.
А теперь подробнее о то, что получилось.

Датасет исторических данных про-игроков в StarCraft 2

Описание данных
Этот датасет содержит 10 переменных:

  1. match_date -Дата матча в формате mm/dd/yyyy
  2. player_1 — Игрок 1
  3. player_1_match_status — Статус матча для игрока 1: winner или loser
  4. score — результат матча (например: 1-0, 1-2 и т. д.)
  5. player_2 — Игрок 2
  6. player_2_match_status — Статус матча для игрока 2: winner или loser
  7. player_1_race — Игрок 1 Расса: Z — Зерг, P — Протосс, T — Терран
  8. player_2_race — Игрок 2 Расса: Z — Зерг, P — Протосс, Т — Терран
  9. аддон — игровой аддон: WoL- Wings of Liberty, HotS — Heart of the Swarm, LotV — Legacy of the Void
  10. tournament_type — турнир: онлайн или оффлайн

С помощью этого датасета можно, например, спрогнозировать победу одного игрока над другим.

Датасет качаем на kaggle

Обращаю ваше внимание, что данные на kaggle загружена по состоянию на  18 октября 2017г. Что бы их актуализировать можно воспользоваться моим скриптом на Python (Github).

Актуальные данные будут спарсены с сайта aligulac.

Код парсера прилагаю:

# -*- coding: utf-8 -*-
import requests
from bs4 import BeautifulSoup
import pandas as pd
 
start = 1
end = 49
datapl = []
 
for i in range(start, end):
    response = requests.get('http://aligulac.com/earnings/?page=' + str(i) + '&year=all&country=all&currency=all')
    soup = BeautifulSoup(response.text)
    table = soup.find('table', attrs={'class': 'table table-striped table-hover'})
    rows = table.find_all('tr')
    for row in rows:
        cols = row.find_all('td', attrs={'class': 'ea_name'})
        for col in cols:
            for href in col.find_all('a'):
                datapl.append(href['href'].strip())
 
data = []
for i in range(len(datapl)):
     print 'http://aligulac.com'+datapl[i]+'results/'
     response = requests.get('http://aligulac.com'+datapl[i]+'results/')
     soup = BeautifulSoup(response.text)
     table = soup.find('table', attrs={'class': 'table table-hover'})
     rows = table.find_all('tr')
 
     for row in rows:
         cols = row.find_all('td')
         for col in cols:
             data.append(col.text.strip())
             data.append(col['class'])
         for img in row.find_all('img'):
             if img.get('alt') != None and "flag" not in img.get('src') and "unrated" not in img.get('alt'):
                 data.append(img['alt'])
 
data = [data[i:i + 18] for i in range(0, len(data), 18)]
 
for i in range(len(data)):
        data[i].pop(1)
        data[i].pop(1)
        data[i].pop(1)
        data[i].pop(4)
        data[i].pop(6)
        data[i].pop(6)
        data[i].pop(6)
        data[i].pop(6)
        data[i][2].pop(0)
        data[i][5].pop(0)
 
df = pd.DataFrame(data, columns=["match_date", "player_1", "player_1_match_status", "score", "player_2","player_2_match_status", "player_1_race", "player_2_race", "addon", "tournament_type"])
 
df.to_csv('C:/1.csv', index=False, encoding='utf-8')

Пользуйтесь на здоровье, надеюсь у вас получится сделать что нибудь интересное.

Поделиться
Отправить
Запинить

  • Telegram канал c конспектами книг @fresh_brain
Ваш комментарий
адрес не будет опубликован

ХТМЛ не работает

Ctrl + Enter
Популярное