Quebrando a Banca! Prevendo Resultados em apostas bbb 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 apostas bbb alternativas para ganhar dinheiro rápido, me 💸 lembrei que costumava apostar há alguns anos em apostas bbb sites como Bet365 e SportingBet.
No entanto, meus ganhos em apostas bbb dinheiro, 💸 que podiam ser até expressivos em apostas bbb 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 apostas bbb 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 apostas bbb primeiro lugar, pensei em apostas bbb 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 apostas bbb 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 apostas bbb história. Por exemplo: se um time vem ganhando há 3 jogos, espera-se que 💸 apostas bbb 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 apostas bbb 💸 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 💸 apostas bbb 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 apostas bbb 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 apostas bbb 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 apostas bbb 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 apostas bbb 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 apostas bbb 💸 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 apostas bbb 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 apostas bbb 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 apostas bbb 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 apostas bbb 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 apostas bbb sites de apostas. Só não esqueça de mandar meus 10%, ok?
Um abraço a todos que chegaram 💸 até aqui!