Algunas observaciones a tener en cuenta: - Los puntos pronosticados por cada grupo, son calculados usando una fórmula que incluye probabilidades, por lo que los puntos obtenidos son decimales (al finalizar un partido un equipo podría recibir 2.5 puntos y el otro 0.5 ... luego esto es redondeado) - Como es el primer mundial de Catar y no había data historica, se le asigno 0 puntos en todos los partidos sin darle 3 al contrario. Es como si no jugase ningún partido. Iré actualizando esta lista mientras me hagan más preguntas
Super todo el proceso. Podrías hacer uno profundizando en como desarrollar las funciones, creo que es clave poder realizar funciones personalizadas para automatizar procesos repetitivos
La final será entre Fracia y Argentina. Muy buena predicción, es increíble que hayas predicho un país, considerando la cantidad de parámetros que hay. En horabuena!
Muy interesante todo el video (y hasta ahorita no va tan alejado de la realidad el modelo). Todavía no estoy en el punto en el que pudiera escribir nada remotamente parecido pero sí en el que entiendo casi todo lo que dijiste. Gracias por la demostración!
Hola hermano!! Esta chevere tu codigo y aun mejor q lo expliques en Catellano. Me parecio ver esta prediction en un articulo tuyo en Medium. Gracias por la explicacion.
Muy buen video. Y me gusta que vas explicando paso a paso. Una cosa a corregir y otra a agregar para mejorar la prediccion del modelo. La correccion es que en vez de utilizar la media para el calculo de la fortaleza, utiliza la media ponderada, mediante el numero de veces que el equipo a participado en mundiales. Y una idea para calcular los valores iniciales de catar es utilizar la media de goles de todos los equipos en su primera aparicion y partido en los mundiales en vez de zero.
Buena idea sobre la media ponderada. Lo tomaré en cuenta para futuros proyectos. Sobre Catar, además de lo que mencione en el video, usé mi logica futbolistica que me decia que un equipo así no pasaria de fase de grupo, por lo que decidi sacarlo de la ecuacion
Ahora solo cambiar, brasil por argentina, pero me parece muy interesante, se podria agregar tambien dara como las faltas, tiros libres, partidos jugando sin un descanzo, desempeño de cada jugador, atajadas del arquero, tipo de juego y temporalidad, y tendriamos algo mas cercano alo real, almenos para predecir los laberiantos
chamo oro tu video casi las pegas al 100 pq era un suramericano con francia eres bueno q bien q exiwste tu canal, no solo adivinaste q un suramericano ganabaaaa aunque fue el vecinooooooooo gfue genial
Octavos: Fallo en que clasifican, Alemania, Gales, Uruguay, Belgica, Dinamarca.... de ahi en adelante todo esto no existe!! Todo muy lindo pero no aplica en futbol! ;)
@@thepycoachES Sobre lo que decis de 4tos es parcial, estas calculando con datos que no son validos y con otros que no tenes... es como hacer una ecuacion con numero equibocados... PD: Creo que a los calculos que usaste le falto el factor humano, osea la "improbabilidad" tanto de jugadores como de arbitros y si queres ser mas exacto la mecanica del VAR, y si aun queres ser mas exacto las desiciones del "poder". No te olvides que esto es un "negocio" ;)
Super buen video, por esta poderosa razon estaba tentado a estudiar Data Science (si tuviera en mis manos todas las variables posibles de x deporte imaginate la precisión para acertar en los juegos, incluso se me ha pasado por la mente poder predecir el futuro jajaja) , pero me fui por Fullstack. Ahora me pregunto como pasar este modelo en código Javascript.😁
Por lo general los modelos de ML son desplegados sobrer un Docker Container en un cluster K8S y es consultado como una API REST o GRPC por una arquitectura basada en eventos tipo pub sub. El API del modelo de ML se despliega utilizando un framework de Python como FastAPI, flask o django.
Tengo una duda, cuando calculas el lambda de cada equipo veo que multiplicas el promedio de goles anotados por el promedio de goles recibidos. Considero que realmente se debería dividir en vez de multiplicar. Porque por ejemplo si el equipo 1 tiene un promedio de goles anotados de 1 y de goles recibidos 3 al multiplicarse da 3, y si el equipo 2 tiene un promedio de goles anotados de 3 y de recibidos 1 da 3 también, entonces ambos equipos tienen el mismo lambda cuando el 2do equipo claramente anota en promedio más goles y recibe en promedio menos goles que el equipo 1, esto porque como está planteada la fórmula no se está penalizando a los equipos que reciben goles
Realmente que valor tiene coger el historico de datos.. ? como bien explicas Austria sale una fortaleza mejor que la que tiene debido al pasado pero eso ya no es representativo, no tiene ninguna influencia, tendria mas sentido coger los datos de los 10 ultimos anios ?
tengo un error en esta linea: dict_table = pickle.load(open('dict_table','rb')) creo que no tengo la version correcta de pandas, ya que yo trabajo en colab AttributeError: Can't get attribute '_unpickle_block' on este es el error. si me ayudan se los agradeceria
Buenas! En 2.1 al hacer el testing tendrías que haber pasado a la función "Qatar" en vez de "Qatar (H)", ya que, si no me equivoco, (H) hace referencia a que es el equipo anfitrión (host) de la Copa del Mundo 2022; por lo tanto, si Qatar estuviera en el dataframe aparecería como "Qatar" y no como "Qatar (H)". Buen video, saludos!
Uff Frank, que buen video! me saque un montón de dudas que tenía sobre como aplicar la estadística a los modelos. Por cierto, de donde sacaste los datasets?
dict_table[group].loc[dict_table[group]['Team'] == home, 'Pts'] += points_home El error me viene de procesar estas líneas, pero no se muy bien la explicación.
hubo solo un factor que falto, la suerte. Dios que mundial mas loco hemos tenido hasta el momento eh? (inicios de octavos de final) Veremos como se va desarrollando y actualizando
buen video y procedimiento, aunque creo que hay otras variables mas importantes, como pretemporadas, goleadores, estado fisico, mentalidad. pero esta muy entretenido, lo voy a realizar. y si le apuntas seria increible jajaja ojala!
hice una predicción utilizando XGBoost y también predijo que Brasil será el campeón... Yo creo que es momento de ir felicitando a nuestros hermanos de brasil
Yo hice mi propio modelo y si lo ajustas desde el año 2000 sería más preciso, y en mi modelo gana Argentina :) , que Brasil haya ganado mundiales anteriores no significa que gane este porque los jugadores son distintos. Gracias por tu gran aporte al mundo de Data, los invito a ver mi primer video también.
Yo hice mi propio modelo y si lo ajustas desde el año 2000 sería más preciso, y en mi modelo gana Argentina :) , que Brasil haya ganado mundiales anteriores no significa que gane este porque los jugadores son distintos. Gracias por tu gran aporte al mundo de Data, los invito a ver mi primer video también. Saludos!
Todo estupendo y muy bien explicado, pero yo tengo un error a pesar de haber volcado tu script en la línea : for group in dict_table: teams_in_group = dict_table[group]['Team'].values df_fixture_group_6 = df_fixture_group_48[df_fixture_group_48['home'].isin(teams_in_group)] for index, row in df_fixture_group_6.iterrows(): home, away = row['home'], row['away'] points_home, points_away = predict_points(home, away) dict_table[group].loc[dict_table[group]['Team'] == home, 'Pts'] += points_home dict_table[group].loc[dict_table[group]['Team'] == away, 'Pts'] += points_away dict_table[group] = dict_table[group].sort_values('Pts', ascending=False).reset_index() dict_table[group] = dict_table[group][['Team', 'Pts']] dict_table[group] = dict_table[group].round(0) El error es : TypeError Traceback (most recent call last) ~\Anaconda3\envs\keras\lib\site-packages\pandas\core\ops.py in na_op(x, y) 1011 try: -> 1012 result = expressions.evaluate(op, str_rep, x, y, **eval_kwargs) 1013 except TypeError: ~\Anaconda3\envs\keras\lib\site-packages\pandas\core\computation\expressions.py in evaluate(op, op_str, a, b, use_numexpr, **eval_kwargs) 204 if use_numexpr: --> 205 return _evaluate(op, op_str, a, b, **eval_kwargs) 206 return _evaluate_standard(op, op_str, a, b) ~\Anaconda3\envs\keras\lib\site-packages\pandas\core\computation\expressions.py in _evaluate_standard(op, op_str, a, b, **eval_kwargs) 64 with np.errstate(all='ignore'): ---> 65 return op(a, b) 66 TypeError: must be str, not float During handling of the above exception, another exception occurred: TypeError Traceback (most recent call last) ~\Anaconda3\envs\keras\lib\site-packages\pandas\core\ops.py in safe_na_op(lvalues, rvalues) 1032 with np.errstate(all='ignore'): -> 1033 return na_op(lvalues, rvalues) 1034 except Exception: ~\Anaconda3\envs\keras\lib\site-packages\pandas\core\ops.py in na_op(x, y) 1022 mask = notna(x) -> 1023 result[mask] = op(x[mask], y) 1024 TypeError: must be str, not float During handling of the above exception, another exception occurred: TypeError Traceback (most recent call last) in 5 home, away = row['home'], row['away'] 6 points_home, points_away = predict_points(home, away) ----> 7 dict_table[group].loc[dict_table[group]['Team'] == home, 'Pts'] += points_home 8 dict_table[group].loc[dict_table[group]['Team'] == away, 'Pts'] += points_away 9 ~\Anaconda3\envs\keras\lib\site-packages\pandas\core\ops.py in f(self, other) 895 896 def f(self, other): --> 897 result = method(self, other) 898 899 # this makes sure that we are aligned like the input ~\Anaconda3\envs\keras\lib\site-packages\pandas\core\ops.py in wrapper(left, right) 1067 rvalues = rvalues.values 1068 -> 1069 result = safe_na_op(lvalues, rvalues) 1070 return construct_result(left, result, 1071 index=left.index, name=res_name, dtype=None) ~\Anaconda3\envs\keras\lib\site-packages\pandas\core\ops.py in safe_na_op(lvalues, rvalues) 1035 if is_object_dtype(lvalues): 1036 return libalgos.arrmap_object(lvalues, -> 1037 lambda x: op(x, rvalues)) 1038 raise 1039 pandas\_libs\algos_common_helper.pxi in pandas._libs.algos.arrmap_object() ~\Anaconda3\envs\keras\lib\site-packages\pandas\core\ops.py in (x) 1035 if is_object_dtype(lvalues): 1036 return libalgos.arrmap_object(lvalues, -> 1037 lambda x: op(x, rvalues)) 1038 raise 1039 TypeError: must be str, not numpy.float64 Gracias:
Muy bueno, yo lo hice también, pero con Java. Lastima que eso no llega a pasar así, por más probabilidades que tenga un equipo de ganar todo es impredecible, como lo que pasó con Alemania. Pero se pasa bueno haciendo esto.
Muy buen contenido!, estaría bueno ver un proyecto "real" de ML en donde ya tengas un modelo entrenado y lo subas a una web (cada cuanto se debe actualizar ese modelo reentrenandolo, etc), mas que nada para tener una base de como se trabaja en la vida real.
Lo re entrenas o recalibras cada vez que las métricas de evaluación del modelo estén por debajo de tu parámetro ideal o que pueda llegar a valores menores 0.5 o negativos según la métrica que utilices. En algún casos también es adecuado hacer un seguimiento al data data drift o concept drift. Saludos
con ese único input siempre dará resultados similares brasil brasil brasil nada más La ejecución está bien pero creo que la propuesta es muy escasa para considerarla un modelo predictivo, siendo que ya en sí el futbol es un deporte muy incierto aún cuando se conocen 20 veces más criterios y elementos de información (claificatoria, copa de su confederación, amistosos recientes, ranking fifa, etc) En este sistema casi siempre va a ganar brasil o selecciones que hayan hecho buen rol en otros mundiales, hay selecciones como méxico que tuvieron como 50 años de pésimos números pero ahora ya no son tan malos, y viceversa otros como hungría o austria que tuvieron buen pasado en los primeros mundiales y ahora mismo ya no les va tan bien, tendría que incluirse al menos el ranking fifa y un par de variables más que den más peso a la situación actual de la selección
Lo de Croacia a Brazil, era una anomalia que solo es dable en el fútbol , si ganaba Brazil dudo que contra Argentina hubiera perdido, y sobrado salia esa final que mencionas
Bien programado. Me parece que basarte unicamente en data histórica de diferencia de goles no ayuda predecir bien. Basicameente el equipo con mejor diferencia de gol va a ganar siempre. Por otro lado no creo que sea determinante en un mundial la condición de local o visitante, si afectaría en una liga. Estaría bueno pensar algún tipo de variable del estilo de "como llegan los equipos a la competencia", conosiderando cantidad de partidos invictos, nivel de los opoenentes, etc. Saludos!!!
Hola. No estoy usando el factor local/visitante. Solo que preferi usar los terminos "local" y "visitante" en vez de decir "equipo 1" y "equipo 2" Respecto a lo otro. A mi me gustaria crear un modelo de machine learning y considerar más variables, pero no contaba con la data disponible y tambien si hago todo más complejo ya no queda como para un tutorial. Queria ampliar la data con data de las eliminatorias, pero las eliminatorias de cada confederación tiene diferente nivel, por lo que lo descarte.
@@thepycoachES Tampoco se puede que consideres más variables ya que más de 3 te da un Durbin Watson mayor a 4. Imagínate si se pudiera desde cuando se hubiera hecho usando supercomputadoras resolviendo matrices de 1000 X 1000.
El strengh de un equipo también debería incluir la variable partidos ganados y perdidos debido a que puede ser que un equipo sea muy goleador pero puede ser que pierda mas partidos. Por otro lado, otra variable podría ser la cantidad de participaciones mundialistas...
I think that you should take matches from last 1-4 years. Match results from 10 and more years ago are worthless. Look at Poland. It have won bronze medals in the 20th century, but then had problems of getting to the World Cup.
Quizás se debe contemplar algo muy recurrente que es los goles anotados por definición de penales, eso cambia un poco las cosas porque el algoritmo se basa en la cantidad de goles anotados y recibidos.
Datos historicos desde 1930... mmm... no lo se Rick... te invito a que agregues otras variables al modelo (cuantos de los jugadores juegan en Europa, la edad de los jugadores, salario de los jugadores, etc...), y no utilices una dist Poisson para predecir, utiliza los ultimos partidos (max 5 anhos) con todas estas variables en un neural network o en un random forest. Igual disfrute ver el video
Buen vídeo, tengo una duda, estos proyectos que estas haciendo acá los podrías añadir a tu curso de udemy? Yo ya lo compré pero me gustaría tener estos vídeos también allá, muchas gracias
@@arielviale77 La verdad es muy bueno, explica las cosas bastante detalladas y responde las dudas, lo único es que es muy para principiantes, si ya buscas algo muy avanzado es mejor otros
muchas gracias por el video, esta genial, me gustaria aportar algo sin que suene a critica negativa, y es que quizas te interesaria pasarle el "linter" a tu codigo para cumplir los pep8 standars, queda el codigo mejor.
¿Cumplirás?, todo indica que Alemania queda fuera en primera ronda. Japón con el empate tiene o perder por pocos goles ante España. Ese es el problema de hacerle al vidente y te lo digo con todo respeto. El modelo de Dixon & Coles no es viable para el mundial, mucho menos si se juega en el Medio Oriente y en los meses de noviembre y diciembre.
Karin Benzema se ha lesionado, usualmente los campeones del mundial anterior no pasan de fase de grupos, es como una maldición. Pudo haber sido bueno poner esa restricción.
@@thepycoachES Francia también tiene muchos titulares lesionados por más que tenga un buen recambio. Podría llegar a pasarla un poco mal ante Dinamarca.
@@Sebastian_Sante99 Entretenimiento de 1 hora y media con calculos sin base precisa donde lo dicho es que el futbol ''NO son matematicas''. Nadie se ha ofendido, si te ofende mi comentario el problema puede ser tuyo.
Los resultados que arroja son los mismos a que si uno iba grupo por grupo y decía "este queda primero por la historia, y este segundo porque sus jugadores son fuertes y juegan en Europa". Al final de nada sirve eso. Todos dicen que Senegal pasa porque les gusta Sadio Mané pero posiblemente ni juege todos los partidos. Y todos decian que Argentina iba a quedar primero por el invicto, por Messi y por la historia, pero pierde contra el que todos dicen que quedaría último de ese grupo....
@@thepycoachES No faltan los super dotados que creen saberlo todo, descreditando la ciencia y la inteligencia. Pensamiento mágico creo que se podria llamar.... En temas importantes, te comento que me gustó el video; sólo me queda la duda cuando agregaste la variable "prob_draw" que es el caso de empate. Si es el mismo valor probable, esa variable la agregas a ambos equipos, con lo cual no es significativo, según lo que creo. Esa variable es la que me hace ruido. Un abrazo, te felicito por tu trabajo y explicación.
@@thepycoachES Se nota que no entendiste el mensaje. ¿Qué tiene de especial pasar X horas probando códigos diciendo que se va a "predecir con datos" si al final sus resultados da casi lo mismo a si alguien iba manualmente grupo por grupo diciendo lo más obvio sobre quién iba a pasar? ¿En qué aporta tu modelo de diferente a lo que alguien sin conocimientos de programación puede decir? Al final el fútbol es bastante impredecible, y casi de nada sirve este tipo de "pronósticos". ¿Qué modelo iba a predecir que Argentina perdería contra Arabia? ¿que Marruecos le gane a Bélgica? ¿que Japón le gane a Alemania? Prácticamente nadie. Pero este tipo de videos siempre dice que los mismos de siempre ganarían: Argentina, Bélgica y Alemania. En el fútbol nada está dicho.
@@djmiguelon100Buena observación. Solo no quería dejar de lado el empate pero si te das cuenta en la combinatorias de un rango de 0 a 10 goles para cada equipo (el cual es el que use) solo hay 11 posibles empates desde el 0-0 que es el más probable hasta el 10-10 que es muy poco probable. Estos 11 escenarios de empate son poquísimos en comparación del perder/ganar (0-1, 0-2 …0-10, 1-2, 1-3, … 1-10, 2-3, …etc), por lo que no afectaría mucho el considerar prob_draw en la ecuación.
@@danielsilvaastudillo35ok te voy a dar una explicación sin ciencia y mucho fútbol. En los últimos 10 años, el Bayer Munich, PSG, Madrid/Barcelona y Juventus han ganado la mayoría de sus ligas. Siempre pueden perder contra un equipo que pelea descenso pero al final esos mismos 3 puntos que pierden sorpresivamente no les impide ganar una liga. Lo que sucede es que cada vez que uno de estos pierde, la noticia da la vuelta al mundo y dicen “wow que impredecible que es el fútbol” cuando solamente es impredecible pocas veces. La mayoría de veces gana el que se supone que debe ganar. Por eso vemos los mismos campeones de champions, ligas, copas del mundo. El factor sorpresa pasa poco y cuando suceden, le sacan el jugo en las noticias. Los partidos de fútbol son impredecible, si, pero los torneos de fútbol los suelen ganar los mismos. El objetivo de esto es ver cuantos aciertos hay en los que pasan a octavos y esperar que los finalistas sean los pronosticados. Ósea me da igual si Argentina pierda contra Arabia o Japón le gane a Alemania, si Argentina/Alemania pasan a octavos, entonces lo pronosticado será correcto.
dejando python de lado, y centrándonos solo en futbol ... las casas de apuesta daban como favorito a Catar. Viendo como juega Catar probablemente haga 0 puntos 😂
@@thepycoachES si, la predicción está bien hecha a partir de lo datos que tuvistes y las probabilidades de las mismas. Pero este mundial está comenzando a descontrolarse en el sentido que los menos favorito o probables ganen.
Me alegro por Ecuador, pero la predicción no dice que Ecuador no le gana a Catar. En realidad, por falta de data histórica de Catar en los mundiales, se le dio 0 puntos en cada partido; es decir, es como si perdiera todos los partidos o no los jugará 😉
@@thepycoachES ahi esta el tema para indizar el poderio, creo que trabajando el algoritmo en esa parte se podrian tener resultados interesantes... muy bueno el enfoque dado.
Algunas observaciones a tener en cuenta:
- Los puntos pronosticados por cada grupo, son calculados usando una fórmula que incluye probabilidades, por lo que los puntos obtenidos son decimales (al finalizar un partido un equipo podría recibir 2.5 puntos y el otro 0.5 ... luego esto es redondeado)
- Como es el primer mundial de Catar y no había data historica, se le asigno 0 puntos en todos los partidos sin darle 3 al contrario. Es como si no jugase ningún partido.
Iré actualizando esta lista mientras me hagan más preguntas
Lession de Richarlison cae en 50% tu pronostico, ni habla si se lessiona Neymar
Excelente video
@@darkstatmat4891 ya SE lesiono Neymar........
@@laloponce2112 POR LAS WEBAS YA ESA TEORIA ENTONCES
Super todo el proceso. Podrías hacer uno profundizando en como desarrollar las funciones, creo que es clave poder realizar funciones personalizadas para automatizar procesos repetitivos
La final será entre Fracia y Argentina. Muy buena predicción, es increíble que hayas predicho un país, considerando la cantidad de parámetros que hay. En horabuena!
Excelente vídeo!! Muy bien explicado cada linea de código. Seguir haciendo vídeos por favor.
Muy interesante todo el video (y hasta ahorita no va tan alejado de la realidad el modelo). Todavía no estoy en el punto en el que pudiera escribir nada remotamente parecido pero sí en el que entiendo casi todo lo que dijiste. Gracias por la demostración!
Hola hermano!! Esta chevere tu codigo y aun mejor q lo expliques en Catellano. Me parecio ver esta prediction en un articulo tuyo en Medium. Gracias por la explicacion.
Muy buen video. Y me gusta que vas explicando paso a paso. Una cosa a corregir y otra a agregar para mejorar la prediccion del modelo. La correccion es que en vez de utilizar la media para el calculo de la fortaleza, utiliza la media ponderada, mediante el numero de veces que el equipo a participado en mundiales. Y una idea para calcular los valores iniciales de catar es utilizar la media de goles de todos los equipos en su primera aparicion y partido en los mundiales en vez de zero.
Buena idea sobre la media ponderada. Lo tomaré en cuenta para futuros proyectos. Sobre Catar, además de lo que mencione en el video, usé mi logica futbolistica que me decia que un equipo así no pasaria de fase de grupo, por lo que decidi sacarlo de la ecuacion
Super buenisimo el video, a la fecha de hoy predijo con exito el grupo A quedo exactamente igual a como lo hizo el algoritmo
Ahora solo cambiar, brasil por argentina, pero me parece muy interesante, se podria agregar tambien dara como las faltas, tiros libres, partidos jugando sin un descanzo, desempeño de cada jugador, atajadas del arquero, tipo de juego y temporalidad, y tendriamos algo mas cercano alo real, almenos para predecir los laberiantos
As a brazilian, i really enjoyed that hahah, thank you for this video, really cool.
chamo oro tu video casi las pegas al 100 pq era un suramericano con francia eres bueno q bien q exiwste tu canal, no solo adivinaste q un suramericano ganabaaaa aunque fue el vecinooooooooo gfue genial
Octavos: Fallo en que clasifican, Alemania, Gales, Uruguay, Belgica, Dinamarca.... de ahi en adelante todo esto no existe!! Todo muy lindo pero no aplica en futbol! ;)
Y a pesar de eso, todos los equipos de cuartos de final pueden ser los mismo a los pronosticados en el video con excepción de Alemania ...
@@thepycoachES Anécdota de Bielsa sobre Guardiola. 'Conoces más al Barcelona que yo': ruclips.net/video/RNui7_TgiLI/видео.html
@@thepycoachES Sobre lo que decis de 4tos es parcial, estas calculando con datos que no son validos y con otros que no tenes... es como hacer una ecuacion con numero equibocados...
PD: Creo que a los calculos que usaste le falto el factor humano, osea la "improbabilidad" tanto de jugadores como de arbitros y si queres ser mas exacto la mecanica del VAR, y si aun queres ser mas exacto las desiciones del "poder". No te olvides que esto es un "negocio" ;)
@@thepycoachES Y España y no vaya a ser que Portugal se queda afuera también. En fin, eso pasa por no usar una cantidad de datos más acertada
Super buen video, por esta poderosa razon estaba tentado a estudiar Data Science (si tuviera en mis manos todas las variables posibles de x deporte imaginate la precisión para acertar en los juegos, incluso se me ha pasado por la mente poder predecir el futuro jajaja) , pero me fui por Fullstack. Ahora me pregunto como pasar este modelo en código Javascript.😁
Por lo general los modelos de ML son desplegados sobrer un Docker Container en un cluster K8S y es consultado como una API REST o GRPC por una arquitectura basada en eventos tipo pub sub. El API del modelo de ML se despliega utilizando un framework de Python como FastAPI, flask o django.
Tengo una duda, cuando calculas el lambda de cada equipo veo que multiplicas el promedio de goles anotados por el promedio de goles recibidos. Considero que realmente se debería dividir en vez de multiplicar. Porque por ejemplo si el equipo 1 tiene un promedio de goles anotados de 1 y de goles recibidos 3 al multiplicarse da 3, y si el equipo 2 tiene un promedio de goles anotados de 3 y de recibidos 1 da 3 también, entonces ambos equipos tienen el mismo lambda cuando el 2do equipo claramente anota en promedio más goles y recibe en promedio menos goles que el equipo 1, esto porque como está planteada la fórmula no se está penalizando a los equipos que reciben goles
Realmente que valor tiene coger el historico de datos.. ? como bien explicas Austria sale una fortaleza mejor que la que tiene debido al pasado pero eso ya no es representativo, no tiene ninguna influencia, tendria mas sentido coger los datos de los 10 ultimos anios ?
Que gran trabajo, gracias por compartir
tengo un error en esta linea:
dict_table = pickle.load(open('dict_table','rb'))
creo que no tengo la version correcta de pandas, ya que yo trabajo en colab
AttributeError: Can't get attribute '_unpickle_block' on
este es el error.
si me ayudan se los agradeceria
Mismo problema
Parece que es un problema con diferentes versiones de pandas, pero no he logrado resolver este problema saludos.
Buenas! En 2.1 al hacer el testing tendrías que haber pasado a la función "Qatar" en vez de "Qatar (H)", ya que, si no me equivoco, (H) hace referencia a que es el equipo anfitrión (host) de la Copa del Mundo 2022; por lo tanto, si Qatar estuviera en el dataframe aparecería como "Qatar" y no como "Qatar (H)".
Buen video, saludos!
Con este coso, como salía Arabia Saudita con Argentina?
Vamos Argentinaaa!!! 🇦🇷🇦🇷🇦🇷 Buen video 👍
Ya te fallo porque alemania no llego ni octavos
Este proyecto lo tienes en alguno de tus cursos?
Uff Frank, que buen video! me saque un montón de dudas que tenía sobre como aplicar la estadística a los modelos. Por cierto, de donde sacaste los datasets?
dict_table[group].loc[dict_table[group]['Team'] == home, 'Pts'] += points_home
El error me viene de procesar estas líneas, pero no se muy bien la explicación.
Argentina con el resultado de hoy como cambia el modelo :''v
No solo argentina, desde que ganó ecuador se cae esta predicción
Argentina aun puede pasar primero ...
La idea es acertar quienes pasan 1ro y 2do a octavos y las llaves siguientes. Todo sigue igual
Argentina se va a casa, por culpa de Frionel
@@thepycoachES gales es poco probable que lo haga
Podría resolverlo poniendo:
dict_table[group].loc[dict_table[group]['Team'] == home, 'Pts'] += 'points_home'
hubo solo un factor que falto, la suerte.
Dios que mundial mas loco hemos tenido hasta el momento eh? (inicios de octavos de final)
Veremos como se va desarrollando y actualizando
te doy like... aunque falto ponerle a cada equipo un porcentaje de "suerte" porque en los mundiales siempre hay sorpresas ;)
Una consulta para hacer lambda no deberías dividir goles hechos por goles recibidos, en lugar de multiplicar
buen video y procedimiento, aunque creo que hay otras variables mas importantes, como pretemporadas, goleadores, estado fisico, mentalidad.
pero esta muy entretenido, lo voy a realizar.
y si le apuntas seria increible jajaja ojala!
Nuevo sub, excelente
hice una predicción utilizando XGBoost y también predijo que Brasil será el campeón... Yo creo que es momento de ir felicitando a nuestros hermanos de brasil
Yo hice mi propio modelo y si lo ajustas desde el año 2000 sería más preciso, y en mi modelo gana Argentina :) , que Brasil haya ganado mundiales anteriores no significa que gane este porque los jugadores son distintos.
Gracias por tu gran aporte al mundo de Data, los invito a ver mi primer video también.
@@ivanagustingonzales5944 yo tambien hice UNo y me Salio croacia
@@ivanagustingonzales5944 ayuda que estoy haziendo mal??? Por que a todos Les sale Brasil o Argentina y Ami me Salio croacia
Felicitaciones a nuestros hermanos Brasileros por coronarse como campeones de la copa del mundo Catar 2022
@@Nightrain_t como duele
En cuartos de final se fue Brasil.
actualiza la data segun los patidos de fase de grupos seia mas acertado. que creativo eres man
aun es muy temprano ... los 1ros y 2dos de cada grupo aun podrían ser los pronosticados en el video
Gran video, aprendí mucho
Muy buen video! Ando queriendo hacer lo mismo con el fútbol americano, muy interesante todo esto
muy buen video , actualizalo con los que ya estan confirmados que pasan a octavos aver que sucede!!
Creo que los equipos de cuartos de final seran los mismos a los pronosticados (con excepcion de alemania) 🤔
como te va dando vs lo que esta pasando en la copa realmente?
Yo hice mi propio modelo y si lo ajustas desde el año 2000 sería más preciso, y en mi modelo gana Argentina :) , que Brasil haya ganado mundiales anteriores no significa que gane este porque los jugadores son distintos.
Gracias por tu gran aporte al mundo de Data, los invito a ver mi primer video también.
Saludos!
ruclips.net/video/IoNo3qTY78o/видео.html
Todo estupendo y muy bien explicado, pero yo tengo un error a pesar de haber volcado tu script en la línea :
for group in dict_table:
teams_in_group = dict_table[group]['Team'].values
df_fixture_group_6 = df_fixture_group_48[df_fixture_group_48['home'].isin(teams_in_group)]
for index, row in df_fixture_group_6.iterrows():
home, away = row['home'], row['away']
points_home, points_away = predict_points(home, away)
dict_table[group].loc[dict_table[group]['Team'] == home, 'Pts'] += points_home
dict_table[group].loc[dict_table[group]['Team'] == away, 'Pts'] += points_away
dict_table[group] = dict_table[group].sort_values('Pts', ascending=False).reset_index()
dict_table[group] = dict_table[group][['Team', 'Pts']]
dict_table[group] = dict_table[group].round(0)
El error es :
TypeError Traceback (most recent call last)
~\Anaconda3\envs\keras\lib\site-packages\pandas\core\ops.py in na_op(x, y)
1011 try:
-> 1012 result = expressions.evaluate(op, str_rep, x, y, **eval_kwargs)
1013 except TypeError:
~\Anaconda3\envs\keras\lib\site-packages\pandas\core\computation\expressions.py in evaluate(op, op_str, a, b, use_numexpr, **eval_kwargs)
204 if use_numexpr:
--> 205 return _evaluate(op, op_str, a, b, **eval_kwargs)
206 return _evaluate_standard(op, op_str, a, b)
~\Anaconda3\envs\keras\lib\site-packages\pandas\core\computation\expressions.py in _evaluate_standard(op, op_str, a, b, **eval_kwargs)
64 with np.errstate(all='ignore'):
---> 65 return op(a, b)
66
TypeError: must be str, not float
During handling of the above exception, another exception occurred:
TypeError Traceback (most recent call last)
~\Anaconda3\envs\keras\lib\site-packages\pandas\core\ops.py in safe_na_op(lvalues, rvalues)
1032 with np.errstate(all='ignore'):
-> 1033 return na_op(lvalues, rvalues)
1034 except Exception:
~\Anaconda3\envs\keras\lib\site-packages\pandas\core\ops.py in na_op(x, y)
1022 mask = notna(x)
-> 1023 result[mask] = op(x[mask], y)
1024
TypeError: must be str, not float
During handling of the above exception, another exception occurred:
TypeError Traceback (most recent call last)
in
5 home, away = row['home'], row['away']
6 points_home, points_away = predict_points(home, away)
----> 7 dict_table[group].loc[dict_table[group]['Team'] == home, 'Pts'] += points_home
8 dict_table[group].loc[dict_table[group]['Team'] == away, 'Pts'] += points_away
9
~\Anaconda3\envs\keras\lib\site-packages\pandas\core\ops.py in f(self, other)
895
896 def f(self, other):
--> 897 result = method(self, other)
898
899 # this makes sure that we are aligned like the input
~\Anaconda3\envs\keras\lib\site-packages\pandas\core\ops.py in wrapper(left, right)
1067 rvalues = rvalues.values
1068
-> 1069 result = safe_na_op(lvalues, rvalues)
1070 return construct_result(left, result,
1071 index=left.index, name=res_name, dtype=None)
~\Anaconda3\envs\keras\lib\site-packages\pandas\core\ops.py in safe_na_op(lvalues, rvalues)
1035 if is_object_dtype(lvalues):
1036 return libalgos.arrmap_object(lvalues,
-> 1037 lambda x: op(x, rvalues))
1038 raise
1039
pandas\_libs\algos_common_helper.pxi in pandas._libs.algos.arrmap_object()
~\Anaconda3\envs\keras\lib\site-packages\pandas\core\ops.py in (x)
1035 if is_object_dtype(lvalues):
1036 return libalgos.arrmap_object(lvalues,
-> 1037 lambda x: op(x, rvalues))
1038 raise
1039
TypeError: must be str, not numpy.float64
Gracias:
Muy bueno, yo lo hice también, pero con Java. Lastima que eso no llega a pasar así, por más probabilidades que tenga un equipo de ganar todo es impredecible, como lo que pasó con Alemania. Pero se pasa bueno haciendo esto.
Muy buen contenido!, estaría bueno ver un proyecto "real" de ML en donde ya tengas un modelo entrenado y lo subas a una web (cada cuanto se debe actualizar ese modelo reentrenandolo, etc), mas que nada para tener una base de como se trabaja en la vida real.
Lo re entrenas o recalibras cada vez que las métricas de evaluación del modelo estén por debajo de tu parámetro ideal o que pueda llegar a valores menores 0.5 o negativos según la métrica que utilices. En algún casos también es adecuado hacer un seguimiento al data data drift o concept drift. Saludos
Hermoso contenido!!!!!!!
Que estudiaste crack?
Vengo del futuro y te falto agregar el Factor FIFA !!!!
con ese único input siempre dará resultados similares brasil brasil brasil nada más
La ejecución está bien pero creo que la propuesta es muy escasa para considerarla un modelo predictivo, siendo que ya en sí el futbol es un deporte muy incierto aún cuando se conocen 20 veces más criterios y elementos de información (claificatoria, copa de su confederación, amistosos recientes, ranking fifa, etc)
En este sistema casi siempre va a ganar brasil o selecciones que hayan hecho buen rol en otros mundiales, hay selecciones como méxico que tuvieron como 50 años de pésimos números pero ahora ya no son tan malos, y viceversa otros como hungría o austria que tuvieron buen pasado en los primeros mundiales y ahora mismo ya no les va tan bien, tendría que incluirse al menos el ranking fifa y un par de variables más que den más peso a la situación actual de la selección
Lo de Croacia a Brazil, era una anomalia que solo es dable en el fútbol , si ganaba Brazil dudo que contra Argentina hubiera perdido, y sobrado salia esa final que mencionas
Bien programado. Me parece que basarte unicamente en data histórica de diferencia de goles no ayuda predecir bien. Basicameente el equipo con mejor diferencia de gol va a ganar siempre. Por otro lado no creo que sea determinante en un mundial la condición de local o visitante, si afectaría en una liga.
Estaría bueno pensar algún tipo de variable del estilo de "como llegan los equipos a la competencia", conosiderando cantidad de partidos invictos, nivel de los opoenentes, etc.
Saludos!!!
Hola. No estoy usando el factor local/visitante. Solo que preferi usar los terminos "local" y "visitante" en vez de decir "equipo 1" y "equipo 2"
Respecto a lo otro. A mi me gustaria crear un modelo de machine learning y considerar más variables, pero no contaba con la data disponible y tambien si hago todo más complejo ya no queda como para un tutorial. Queria ampliar la data con data de las eliminatorias, pero las eliminatorias de cada confederación tiene diferente nivel, por lo que lo descarte.
@@thepycoachES Tampoco se puede que consideres más variables ya que más de 3 te da un Durbin Watson mayor a 4.
Imagínate si se pudiera desde cuando se hubiera hecho usando supercomputadoras resolviendo matrices de 1000 X 1000.
El strengh de un equipo también debería incluir la variable partidos ganados y perdidos debido a que puede ser que un equipo sea muy goleador pero puede ser que pierda mas partidos. Por otro lado, otra variable podría ser la cantidad de participaciones mundialistas...
si toma todas las variables que dependen en un partido, el video duraria mil horas xD
Sii se cumpliooo Argentina 2 - 0 Mexico
I think that you should take matches from last 1-4 years. Match results from 10 and more years ago are worthless. Look at Poland. It have won bronze medals in the 20th century, but then had problems of getting to the World Cup.
Quizás se debe contemplar algo muy recurrente que es los goles anotados por definición de penales, eso cambia un poco las cosas porque el algoritmo se basa en la cantidad de goles anotados y recibidos.
Vengo del futuro y acertaste con México
Datos historicos desde 1930... mmm... no lo se Rick... te invito a que agregues otras variables al modelo (cuantos de los jugadores juegan en Europa, la edad de los jugadores, salario de los jugadores, etc...), y no utilices una dist Poisson para predecir, utiliza los ultimos partidos (max 5 anhos) con todas estas variables en un neural network o en un random forest. Igual disfrute ver el video
jajaj voy a guardar este video para el dia de la final que interesante.
Buen vídeo, tengo una duda, estos proyectos que estas haciendo acá los podrías añadir a tu curso de udemy? Yo ya lo compré pero me gustaría tener estos vídeos también allá, muchas gracias
Jose me gustaria tu reseña del curso de udemy porque tambien estoy con intenciones de comprarlo!! Gracias!!
@@arielviale77 La verdad es muy bueno, explica las cosas bastante detalladas y responde las dudas, lo único es que es muy para principiantes, si ya buscas algo muy avanzado es mejor otros
Ok! En un par de días cuando tenga tiempo libre lo voy a agregar
Hace poco estaba diciendo entre mi mismo xd que los posibles ganadores podrían ser Brasil o Francia XD muy bien código 🐍
muchas gracias por el video, esta genial, me gustaria aportar algo sin que suene a critica negativa, y es que quizas te interesaria pasarle el "linter" a tu codigo para cumplir los pep8 standars, queda el codigo mejor.
Que paso pa?
Esta bueno el programa
¿Cumplirás?, todo indica que Alemania queda fuera en primera ronda. Japón con el empate tiene o perder por pocos goles ante España.
Ese es el problema de hacerle al vidente y te lo digo con todo respeto.
El modelo de Dixon & Coles no es viable para el mundial, mucho menos si se juega en el Medio Oriente y en los meses de noviembre y diciembre.
Hola, podria poner los enlaces de los archivos csv para poder descargarlos
Todos los archivos están en los links de la descripción
Karin Benzema se ha lesionado, usualmente los campeones del mundial anterior no pasan de fase de grupos, es como una maldición. Pudo haber sido bueno poner esa restricción.
Como explicas la perdida de Catar ante Ecuador
Pero si Francia ya ganó el mundial sin Benzemá!! Si Francia no pasa de fase de grupos con ese grupo tan facil, dejo de hacer videos de RUclips 😂
@@thepycoachES jajajajaja es una locura este mundial
@@thepycoachES Francia también tiene muchos titulares lesionados por más que tenga un buen recambio. Podría llegar a pasarla un poco mal ante Dinamarca.
@@orfeofernandezochoa4175 Pues no, de hecho ahora Francia se convierte en el favorito.
la informacion de inglaterra USA erro en puntos pero es verdadero en posicion de grupo !!!WOW
Brasil no paso a semifinales, talvez el factor humano es importante, el juego de Croacia y Marruecos nadie lo esperaba
Te olvidaste de la variable Julian alvarez ahre
En fútbol estás predicciones simplemente no van
como programador coincido , aqui faltan datos como el estado fisico de los jugadores ,etc
si sale francia - Brazil me subscribo XD jajajja fuera de Broma muy buen video
El fútbol no son matemáticas amigo, entiendo este video pero obviamente esto no dice nada
Es prediccion mas que nada entretenimiento, no te ofendas
@@Sebastian_Sante99 Entretenimiento de 1 hora y media con calculos sin base precisa donde lo dicho es que el futbol ''NO son matematicas''. Nadie se ha ofendido, si te ofende mi comentario el problema puede ser tuyo.
Los resultados que arroja son los mismos a que si uno iba grupo por grupo y decía "este queda primero por la historia, y este segundo porque sus jugadores son fuertes y juegan en Europa". Al final de nada sirve eso. Todos dicen que Senegal pasa porque les gusta Sadio Mané pero posiblemente ni juege todos los partidos. Y todos decian que Argentina iba a quedar primero por el invicto, por Messi y por la historia, pero pierde contra el que todos dicen que quedaría último de ese grupo....
Ok. Entonces voy a crear un modelo solo para ti donde la final la jueguen Catar vs Costa Rica 😂
@@thepycoachES No faltan los super dotados que creen saberlo todo, descreditando la ciencia y la inteligencia. Pensamiento mágico creo que se podria llamar....
En temas importantes, te comento que me gustó el video; sólo me queda la duda cuando agregaste la variable "prob_draw" que es el caso de empate. Si es el mismo valor probable, esa variable la agregas a ambos equipos, con lo cual no es significativo, según lo que creo. Esa variable es la que me hace ruido. Un abrazo, te felicito por tu trabajo y explicación.
@@thepycoachES Se nota que no entendiste el mensaje.
¿Qué tiene de especial pasar X horas probando códigos diciendo que se va a "predecir con datos" si al final sus resultados da casi lo mismo a si alguien iba manualmente grupo por grupo diciendo lo más obvio sobre quién iba a pasar?
¿En qué aporta tu modelo de diferente a lo que alguien sin conocimientos de programación puede decir?
Al final el fútbol es bastante impredecible, y casi de nada sirve este tipo de "pronósticos".
¿Qué modelo iba a predecir que Argentina perdería contra Arabia? ¿que Marruecos le gane a Bélgica? ¿que Japón le gane a Alemania? Prácticamente nadie. Pero este tipo de videos siempre dice que los mismos de siempre ganarían: Argentina, Bélgica y Alemania.
En el fútbol nada está dicho.
@@djmiguelon100Buena observación. Solo no quería dejar de lado el empate pero si te das cuenta en la combinatorias de un rango de 0 a 10 goles para cada equipo (el cual es el que use) solo hay 11 posibles empates desde el 0-0 que es el más probable hasta el 10-10 que es muy poco probable. Estos 11 escenarios de empate son poquísimos en comparación del perder/ganar (0-1, 0-2 …0-10, 1-2, 1-3, … 1-10, 2-3, …etc), por lo que no afectaría mucho el considerar prob_draw en la ecuación.
@@danielsilvaastudillo35ok te voy a dar una explicación sin ciencia y mucho fútbol. En los últimos 10 años, el Bayer Munich, PSG, Madrid/Barcelona y Juventus han ganado la mayoría de sus ligas. Siempre pueden perder contra un equipo que pelea descenso pero al final esos mismos 3 puntos que pierden sorpresivamente no les impide ganar una liga.
Lo que sucede es que cada vez que uno de estos pierde, la noticia da la vuelta al mundo y dicen “wow que impredecible que es el fútbol” cuando solamente es impredecible pocas veces. La mayoría de veces gana el que se supone que debe ganar. Por eso vemos los mismos campeones de champions, ligas, copas del mundo.
El factor sorpresa pasa poco y cuando suceden, le sacan el jugo en las noticias. Los partidos de fútbol son impredecible, si, pero los torneos de fútbol los suelen ganar los mismos.
El objetivo de esto es ver cuantos aciertos hay en los que pasan a octavos y esperar que los finalistas sean los pronosticados. Ósea me da igual si Argentina pierda contra Arabia o Japón le gane a Alemania, si Argentina/Alemania pasan a octavos, entonces lo pronosticado será correcto.
Ecuador ganó el partido de inauguración, será bueno como cambiará esto en el mundial
uufff una locura
dejando python de lado, y centrándonos solo en futbol ... las casas de apuesta daban como favorito a Catar. Viendo como juega Catar probablemente haga 0 puntos 😂
@@thepycoachES si, la predicción está bien hecha a partir de lo datos que tuvistes y las probabilidades de las mismas. Pero este mundial está comenzando a descontrolarse en el sentido que los menos favorito o probables ganen.
Deus te oiga manito!!!!
VAMOS ARGENTINA 🇦🇷🇦🇷🇦🇷🇦🇷
El titulo debió haber sido: prediciendo el mundial con maicena y python
Si la final es Francia vs Brasil me suscribo un año jsjsjs
buen video, ojala gane Brasil según Python
Felicitaciones a Brasil por su sexta copa del mundo.
😁
Brasil y Francia son los equipos más fuertes del mundial jugador por jugador. Pero no Siempre tener el mejor equipo significa llegar a la final.
Activo mufa
Gracias genio!
predecime argentina arabia por probabilidades! dale!
Lo malo es que la programación estaba basada en la lógica y el futbol no tiene lógica, no sirven de nada las estadísticas.
Entre para ver la predicción y este solo enseña como hacer el programa para hacer predicciones kaajajakajakajka
Predijo el grupo c :(, felicidades por tu algoritmo.
la fifa lo busca
Ganó Argentina. Almenos acertó que Francia llegaría a la final. Algo es algo. 😄
ya se predijo que ni brazil ni argentina quedaran campeones este año si no un equipo sorpresa por ciertos arreglos
Anuló la mufa
@@rodrigotapia9145 cerra el orto asi no funciona
Yo te predigo que Francia deja afuera a Argentina 3-1
Con el resultado de hoy se cae todo, pasaron argentina y arabia
vine a anular la mufa por las dudas :D
por cierto ya salio brasil, ya valió madre esta cosa.
doy dislike solo porque no gano argentina xd
Espero que vuelvas cuando Argentina le gane a Mexico/Polonia 😁
@@thepycoachES claro solo por un mal arranque ya piensan que argentina esta afuers
@@thepycoachES creo que no va a volver...
XD
Denunciado por miniatura falsa!
ES FALSO . PHYTON ES TAN LENTO QUE LA PRECONDICIÓN TARDARÍAS SIGLOS. PORQUERÍA SOBRE VALORADA DE LENGUAJE.
Ya falla la prediccion Ecuador va ganando xD
Me alegro por Ecuador, pero la predicción no dice que Ecuador no le gana a Catar. En realidad, por falta de data histórica de Catar en los mundiales, se le dio 0 puntos en cada partido; es decir, es como si perdiera todos los partidos o no los jugará 😉
@@thepycoachES ahi esta el tema para indizar el poderio, creo que trabajando el algoritmo en esa parte se podrian tener resultados interesantes... muy bueno el enfoque dado.
cuaqleuria
ward
oye si es pentacampeón, lo mas lógico es que salga Brasil. esto fue una mamada
Jajajajajaja