Я только что был назначен специалистом по данным в Innovaccer в декабре 2015 года, и меня попросили пройти курс по интеллектуальному анализу данных, который был запланирован на мой последний семестр. Класс дал мне понимание основных алгоритмов поля. Нас учили классификации, кластеризации и анализу правил ассоциации.

Наш профессор хотел, чтобы мы разобрались в приложениях, и попросил нас выбрать интересующую нас тему и применить некоторые алгоритмы, чтобы получить полезный результат. Пока мои одноклассники выбирали известные наборы данных, такие как Iris, NLM Digit Classifier, я решил проявить новаторство. Аукцион IPL состоялся всего пару дней назад, и он поставил вопрос, кого следует выбрать? Я решил построить дерево решений, которое классифицировало бы игрока по его прошлой статистике.

Первой задачей было собрать прошлые данные для игрока. Исходя из силы лиги, я решил выбрать статистику только из международных матчей, прошлых рекордов IPL, большой бас-лиги и внутренних соревнований Англии. После определения записей для использования встал вопрос о переносе их в мою систему. Мне повезло, что было много веб-сайтов, таких как cricinfo, cricbuzz и официальные веб-сайты IPL, которые предоставили эти записи.

Используя BeautifulSoup в Python, мне удалось очистить веб-страницы и получить записи в мою локальную систему. Следующим шагом было агрегирование для создания единой базы данных для построения и обучения дерева решений. С помощью библиотеки pandas в python соответствующими фреймами данных обрабатывались для получения желаемого результата.

Чтобы построить классификатор, нам потребовалось определить класс игроков. Мы решили определить класс игрока на основе его уровня удержания для соответствующей франшизы. Соотношение определялось

Соотношение выше 0,5 считалось хорошим игроком, соотношение от 0,25 до 0,5 классифицировалось как средний игрок, а ниже - как плохой игрок. Это снова было достигнуто с помощью фрейма данных pandas.

Когда база данных была готова, оставалось только построить дерево решений. Сначала мы разделили данные на 2 части, обучение и тестирование. Поскольку в обучающих данных было много функций, я решил использовать алгоритм Relief F, чтобы определить 10 наиболее важных функций. Затем мы построили дерево решений J48, увеличенную версию которого можно увидеть ниже.

Дерево выглядело вполне логичным, поскольку верхний узел состоял из определения количества 50 очков, которые набрал игрок. Если он был больше 14, то игрок классифицировался как хороший игрок. Если нет, то статистика игрока по боулингу используется для определения класса игрока. Это то, что большинство энтузиастов крикета использовали бы, чтобы определить, насколько хорош игрок. При запуске дерева на скрытых тестовых данных мы получили общую точность 80%.