Formule 1 et même plateau avec la vitesse des pilotes

Occasion

Il y a quelques mois, dans le cadre de la collaboration entre Amazon et la Formule 1, des chercheurs "utilisant la puissance des technologies cloud" ont déployé une comparaison de la vitesse des pilotes de tous les temps ( lien ). Naturellement, le matériel était de la publicité hype et il a atteint son objectif. Dans tout le monde de la formule pendant quelques jours, on ne parlait que dans l'esprit de "pourquoi n'y a-t-il pas de pilote N dans le classement?" et "comment M pourrait-il être plus rapide que K si K réussissait dans la saison L." Il est devenu intéressant pour moi de répéter plus ou moins cette recherche et, si possible, de me passer de «toute la puissance des technologies cloud».

note d'origine
note d'origine

Une tâche

. . , , , , , . . AWS – . , . .

F1, – 10% , 90% - . - , .. , , . , , . , , .

. , , «» . , 2 , , « » - , . , . , , , .

. , , . «» , , 1. , , , .

, , kp, .

.. V = V0*kp*kc*Tr, kc – , Tr – , .

, ln(ki)-ln(kj)=ln(tj)-ln(ti) .

. m*(n+1), n – , m – . 1 -1 , , .

AWS, , , - . , , « » - , . .. «» 2 0 .

, F1. . , , , , . , , , - .

  , , 2 . 3 . 1 – , . , «». – . , . . – . , , .

, . , 1, 2 3 . , , .

import sys
import re
import urllib.request


def get_wikipedia_page(title, lang='en'):
    url = 'https://'+lang+'.wikipedia.org/wiki/'+(title.replace(' ', '_'))
    fp = urllib.request.urlopen(url)
    mybytes = fp.read()
    
    mystr = mybytes.decode("utf8")
    fp.close()
    return mystr

title = 'List of Formula One Grands Prix'

try:
    print('process: '+title)
    th = get_wikipedia_page(title)
    r1 = re.findall(r'href="/wiki/[\d][\d][\d][\d]_[\w]*_Grand_Prix"',th)
    list_of_GP = list(set(r1))
except:
    print("Unexpected error:", sys.exc_info()[0])

titles = list(map(lambda x: x[12: -1].replace('_', ' '), list_of_GP))


for title in titles:
    try:
        print('process: '+title)
        th = get_wikipedia_page(title)
        with open('texts/'+title+'.txt', 'w', encoding='utf8') as the_file:
            the_file.write(th)
            the_file.close()
    except:
        print("Unexpected error:", sys.exc_info()[0])

html . . ( ), ( ), «» . csv.

DataFrame. , :

+ . ,

+ – , 1 , 2

= + . , . , . - , .

qual_df = pd.read_csv('qual_results.csv')

qual_df['Track_pl_len'] = qual_df['Track'] + '_' +qual_df['Track_len'].apply(str)
qual_df['Car'] = qual_df['Constructor'] + '_' +qual_df['Year'].apply(str)
qual_df['Driver_pl_year'] = qual_df['Driver']+'_'+qual_df['Year'].apply(str)

qual_df_2 = qual_df.copy()
qual_df_2['Driver_pl_year'] = qual_df_2['Driver']+'_'+((qual_df_2['Year'].apply(int)-1)).apply(str)
double_df = pd.concat([qual_df, qual_df_2])
del qual_df2

. , . . , , . , , . .

. 2 , .

  • , ..

  • , 2 –

  • , «» «» - 6 2%. , «» 1 – , . ,

  • 2 One Hot Encoding , x = 1 , y -1

  • , . , – 1 , .. 1, 0. –

  • . ln(k) - .

, .

, , «» , .. , F1 Amazon.

, :

,

18 , . , + + , . , 10. , . . , .

– . 2019 , . , 1.

– . . , . , 1 . . 1, / .

, :

N

Driver

Total min

1

Ayrton Senna

-     0,435

2

Michael Schumacher

-     0,408

3

Alain Prost

-     0,289

4

Damon Hill

-     0,037

5

Lewis Hamilton

-     0,037

6

Charles Leclerc

       0,016

7

Rubens Barrichello

       0,024

8

Fernando Alonso

       0,067

9

Nico Rosberg

       0,081

10

Nigel Mansell

       0,102

11

Carlos Pace

       0,117

12

Mika Häkkinen

       0,145

13

Max Verstappen

       0,147

14

Valtteri Bottas

       0,153

15

Elio de Angelis

       0,164

16

Daniel Ricciardo

       0,165

17

Jarno Trulli

       0,172

18

Giancarlo Fisichella

       0,184

  ( , .. 1 ):

  , .

:

2020 – , ( – 1979 , ).

, Renault , . Racing Point, 2 , Alpha Tauri 2020, Red Bull 2019 Ferrari 2020, - 2018 .

, 2019 Mercedes, 10 , Red Bull . , , , , .

. , . - , . . , .

, ( , .. 2 , 1):

Driver

Car

 Time_predicted_sec

Lewis Hamilton

Mercedes

                        77,711

Valtteri Bottas

Mercedes

                        77,850

Max Verstappen

Red Bull Racing-Honda

                        78,252

Lando Norris

McLaren-Renault

                        78,324

Sergio Pérez

Racing Point-BWT Mercedes

                        78,345

Lance Stroll

Racing Point-BWT Mercedes

                        78,439

Daniel Ricciardo

Renault

                        78,451

Carlos Sainz Jr.

McLaren-Renault

                        78,549

Esteban Ocon

Renault

                        78,665

Alexander Albon

Red Bull Racing-Honda

                        78,878

Pierre Gasly

AlphaTauri-Honda

                        78,985

Daniil Kvyat

AlphaTauri-Honda

                        79,108

Charles Leclerc

Ferrari

                        79,116

Sebastian Vettel

Ferrari

                        79,531

Romain Grosjean

Haas-Ferrari

                        79,656

Kevin Magnussen

Haas-Ferrari

                        79,738

Kimi Räikkönen

Alfa Romeo Racing-Ferrari

                        80,399

Antonio Giovinazzi

Alfa Romeo Racing-Ferrari

                        80,658

1 Amazon . : .

, , , / , , .

, . , , – 70 1. , .

Il n'a pas été possible de construire une régression décente, un modèle apparemment sans problème donne encore des résultats inattendus. Toutes les tentatives pour construire un modèle unifié, tenant compte à la fois de l'influence de la machine et du pilote, sont arrivées à la nécessité d'une stricte régularisation.

J'attache un github à l'article avec les données initiales et les tableaux croisés dynamiques pour l'auto-apprentissage, j'ajouterai le code dès que je n'en aurai pas honte.

Lien vers Github




All Articles