Quebrando a Banca! Prevendo Resultados em 1.5 aposta Sites de Apostas com Inteligência Artificial
Como podemos nos aproveitar de técnicas de Inteligência🏧 Artificial para prever resultados de jogos de futebol e — quem sabe — ganhar dinheiro apostando! Arthur Oliveira · Follow🏧 7 min read · Mar 1, 2024 -- 3 Share
Recentemente, enquanto pensava em 1.5 aposta alternativas para ganhar dinheiro rápido, me🏧 lembrei que costumava apostar há alguns anos em 1.5 aposta sites como Bet365 e SportingBet.
No entanto, meus ganhos em 1.5 aposta dinheiro,🏧 que podiam ser até expressivos em 1.5 aposta um primeiro momento, descambavam para uma série de apostas feitas com a emoção🏧 assim que eu começava a perder. Logo eu zerava minha conta e começava tudo de novo. Ou desistia alegando que🏧 aquilo não era pra mim.
e… perdeu!
Como recentemente tenho realizado incursões sobre o estudo de Data Science, pensei:
Porque não aplicar meus🏧 conhecimentos em 1.5 aposta Data Science a jogos de futebol para tentar fazer uma grana fácil?
Como me senti quando ganhei uma🏧 aposta 10 para 1… e perdi tudo no jogo seguinte.
Neste artigo você irá aprender:
Como fazer seleção, limpeza e filtragem de🏧 dados. Como plotar um gráfico com a biblioteca MatPlotLib. O algoritmo de Aprendizado de Máquina Naive Bayes. Como usar Python🏧 para fazer previsões de jogos de futebol.
Escolhendo os Dados
O que eu quero analisar mesmo?
O primeiro ponto a pensar é: o🏧 que quero analisar? Em 1.5 aposta primeiro lugar, pensei em 1.5 aposta analisar jogador por jogador dos times. Teríamos muitos dados, estatísticas🏧 detalhadas de cada jogador ao longo da carreira, números de gols, assistências, desarmes, etc. Uma outra possibilidade seria aproveitar de🏧 atributos que jogos de futebol como FIFA e PES já calculam. No entanto, a extração desses dados seria custosa e🏧 demorada para um experimento rápido como esse.
Então, pensei em 1.5 aposta uma alternativa: analisar o histórico de jogos e tentar identificar🏧 padrões neles. Isso significa que o resultado do próximo jogo de um time de futebol represente um reflexo do que🏧 foi no passado, digamos há 10 anos atrás? Não! Significa apenas que iremos tentar achar tendências de acordo com os🏧 jogos do time ao longo de 1.5 aposta história. Por exemplo: se um time vem ganhando há 3 jogos, espera-se que🏧 1.5 aposta equipe esteja motivada e que exista uma tendência de vitória no próximo jogo. Está confuso? Isso ficará mais claro🏧 à frente.
Navegando pela internet despretensiosamente, encontrei nesse site o histórico de todos os jogos da história do Corinthians em 1.5 aposta🏧 uma planilha de Excel. Um trabalho e tanto! Decidi, portanto, usar essa planilha nesse experimento (não tem nada a ver🏧 com eu ser torcedor do timão, ok?). Detalhe: tudo o que eu fizer aqui é aplicável a qualquer outro time🏧 que você deseje analisar. Basta trocar o arquivo de dados.
Analise isso!
Limpando e Filtrando Dados
A primeira coisa a se realizar nesse🏧 experimento é a limpeza e filtro dos dados. No nosso caso, a planilha fornecida vem com abas, colunas e linhas🏧 desnecessárias , sendo preciso cortar bastante coisa para ficarmos unicamente com o que interessa: o valor de uma partida e🏧 1.5 aposta data. Também excluí toda partida de futebol antes da década de 60.
Fiz esse processo à mão pelo Excel mesmo.🏧 Por fim, cheguei a um arquivo CSV que você pode baixar aqui.
Vamos carregá-lo com Python para entender 1.5 aposta estrutura? Para🏧 isso, vamos usar o Pandas, uma biblioteca que é voltada para análise de dados. Ela irá facilitar muito o nosso🏧 trabalho.
import pandas as pd csv = pd.read_csv('Jogos_Corinthians.csv', encoding = 'utf8') print(csv.head())
A saída está apresentada a seguir e nos mostra os🏧 seguintes valores: data do jogo, o time do Corinthians, resultado do jogo e o adversário. O comando head mostra as🏧 10 primeiras linhas de um conjunto de dados. Por simplicidade e para facilitar a visualização, coloquei apenas a duas primeiras.
>>>
DATA🏧 CORINTHIANS PLACARCOR PLACARADV ADVERSARIO
17-01-60 CORINTHIANS 2 2 LONDRINA (FR)
20-01-60 CORINTHIANS 1 1 CORINTHIANS (PRUDENTE)
Preparando os Dados
Agora que já temos os🏧 nossos dados, precisamos prepará-los. Para esse experimento, vamos tentar prever Vitória, Empate ou Derrota de acordo com o resultado do🏧 jogo.
Portanto, vamos transformá-los aqui com uma lógica bem simples: para cada jogo, verificamos qual time tem maior número de gols🏧 — ou se esse número é igual — e determinamos se o Corinthians ganhou, perdeu ou empatou. Como o computador🏧 apenas entende números, vamos colocar 2 para representar vitória, 0 para derrota e 1 para empate.
dados = [] for _,🏧 d in csv.iterrows(): data = d['DATA'] golsCorinthians = d['PLACARCOR'] golsAdversario = d['PLACARADV'] if golsCorinthians > golsAdversario: dados.append('2') #Vitória elif golsCorinthians🏧 < golsAdversario: dados.append('0') #Derrota else: dados.append('1') #Empate
Se exibirmos o vetor de dados, teremos um resultado mais ou menos assim:
>>> [1,🏧 1, 2, 2, 0, 1, 2, 1, 0, 0, 1, 2, 2, 2, 2, 1, 2, 1, 0, 1,...]
Vamos ver🏧 também qual o tamanho do nosso conjunto de dados.
print(len(dados))
>>> 4078
É bastante jogo para nossa base!
Para visualizar melhor, vamos fazer um🏧 gráfico dos primeiros 50 jogos do Corinthians desde 1960. Daí poderemos ver a evolução dos resultados do Corinthians ao longo🏧 dos anos. Para isso, vamos usar a biblioteca MatPlotLib.
import matplotlib.pyplot as plt plt.plot(csv['DATA'][0:50],dados[0:50]) plt.show()
Evolução do Corinthians nos primeiros 50 jogos🏧 da década de 60. Legenda: 1: Vitória, 0: Empate, -1: Derrota.
Agora, estamos prontos para alimentar nosso algoritmo de Aprendizado de🏧 Máquina: Naive Bayes.
Naive Bayes
Como o objetivo deste artigo não é explicar o algoritmo Naive Bayes em 1.5 aposta detalhes, mas utilizá-lo🏧 na previsão de jogos, serei extremamente sucinto.
Naive Bayes é um algoritmo de Aprendizado de Máquina que utiliza de probabilidade condicional🏧 para calcular a chance de um recurso pertencer a uma determinada classe.
No nosso caso, queremos saber a probabilidade do próximo🏧 jogo ser Vitória, Empate ou Derrota com base em 1.5 aposta jogos passados.
E aquela aula de probabilidade que você matou?
Para saber🏧 mais, aqui tem uma ótima referência.
Prevendo Jogos com o Aprendizado de Máquina
Dando continuidade à nossa implementação, vamos por a mão🏧 na massa e implementar em 1.5 aposta Python o algoritmo Naive Bayes.
Mas antes, devemos preparar os nossos dados para o algoritmo.🏧 A primeira decisão que devemos tomar é de quanto será nossa “janela”, ou seja, qual o intervalo de jogos iremos🏧 analisar. Por exemplo, considere que os últimos 5 resultados do time foram: V V E D V. Se nossa janela🏧 vale 2, então iremos treinar o algoritmo com:
Entrada: V, V; saída: E
Entrada: V, E; Saída: D
Entrada: E, D; Saída: V
E🏧 assim por diante por todo o nosso conjunto de dados.
Não existe um valor de janela correto aqui. Devemos realizar muitos🏧 testes e escolher qual nos traz melhores resultados de previsão.
Considerando uma janela de 2 jogos, temos a implementação apresentada a🏧 seguir. Nesse caso, usamos a biblioteca numpy para lidar com matrizes de forma simplificada.
janela = 2 import numpy as np🏧 entrada = np.zeros((len(dados)-janela,janela)) saida = np.zeros((len(dados)-janela)) for i in range(len(dados)-janela): entrada[i] = dados[i:i+janela] saida[i] = dados[i+janela]
Nossa última etapa antes de🏧 iniciar o algoritmo de fato é dividir nosso conjunto de dados entre teste e treinamento respeitando a divisão 80%/20%. Com🏧 isso, treinaremos nosso algoritmo com 80% dos nossos dados e utilizaremos 20% para testar seus resultados de previsão. A biblioteca🏧 SciKit-Learn é indicada nesse processo, fazendo a divisão com apenas uma função: train_test_split. Nesse caso, usamos shuffle = false para🏧 não randomizarem nosso conjunto de dados.
from sklearn.model_selection import train_test_split train_x, test_x, train_y, test_y = train_test_split(entrada,saida,test_size=0.2, shuffle=False)
Por fim, vamos novamente usar🏧 a biblioteca SciKit-Learn para testar o algoritmo Naive Bayes, fazer previsões e imprimir seu resultado.
from sklearn.naive_bayes import MultinomialNB clf_nayve =🏧 MultinomialNB().fit(train_x, train_y) pred_naive = clf_nayve.predict(test_x) print(np.mean(test_y == pred_naive))
O que nos resulta em:
>>>0.4963235294117647
E o que isso significa? Significa que em 1.5 aposta🏧 49% dos jogos nosso algoritmo foi capaz de acertar as previsões. Mas isso é um número aceitável? Basta lembrar que🏧 temos 3 possibilidades aqui: vitória, empate, derrota, ou seja 1/3 para cada em 1.5 aposta um chute aleatório. Isso nos dá🏧 33% de possibilidade de acerto. Nosso algoritmo já ganhou do aleatório, o que quer dizer que conseguiríamos lucrar usando essa🏧 abordagem que fizemos aqui em 1.5 aposta menos de 30 linhas de código.
Considerando que subimos de 33% para 49%, isso nos🏧 dá uma alta de 48% se considerarmos o jogo puramente aleatório ((49–33)/33)). Nada mal, ham?
não estou entendendo p**ra nenhuma
Isso nos🏧 dá muitas possibilidades de incremento no futuro: usar mais dados, considerar outros times, forças e estatísticas dos jogadores e assim🏧 por diante. Ainda, poderíamos usar Redes Neurais Artificiais, o que provavelmente daria um salto de qualidade em 1.5 aposta nossas previsões.
Segue🏧 o código completo:
import pandas as pd
from numpy.random.mtrand import shuffle csv = pd.read_csv('Jogos_Corinthians.csv', encoding = 'utf8') dados = []
data = []
for🏧 _, d in csv.iterrows():
golsCorinthians = d['PLACARCOR']
golsAdversario = d['PLACARADV']
if golsCorinthians > golsAdversario:
dados.append(2)
elif golsCorinthians < golsAdversario:
dados.append(0)
else:
dados.append(1) janela = 2
import numpy as np
entrada🏧 = np.zeros((len(dados)-janela,janela))
saida = np.zeros((len(dados)-janela))
for i in range(len(dados)-janela):
entrada[i] = dados[i:i+janela]
saida[i] = dados[i+janela] from sklearn.model_selection import train_test_split
train_x, test_x, train_y, test_y = train_test_split(entrada,saida,test_size=0.2,🏧 shuffle=False) from sklearn.naive_bayes import MultinomialNB
clf_nayve = MultinomialNB().fit(train_x, train_y)
pred_naive = clf_nayve.predict(test_x)
print(np.mean(test_y == pred_naive))
Conclusão
Neste artigo mostramos como é possível realizar a previsão🏧 de jogos de futebol com Python em 1.5 aposta menos de 30 linhas de código. Apesar das limitações, aqui abre-se um🏧 leque de possibilidades de trabalhos futuros e investigações para aprimorar ainda mais a previsão.
Espero que este artigo ajude a conseguir🏧 muitos ganhos em 1.5 aposta sites de apostas. Só não esqueça de mandar meus 10%, ok?
Um abraço a todos que chegaram🏧 até aqui!