-
Notifications
You must be signed in to change notification settings - Fork 10
Open
Labels
movaicode/18Code en réponse au 18ème concours (mars 2023)Code en réponse au 18ème concours (mars 2023)
Description
Le Machine Learning est la réponse à tous les problèmes.
Hola les péons, agenouillez vous devant la toute puissance du Machine Learning !
La fonction predictionDuSigne PREDIT avec EXACTITUDE le signe astrologique d'une personne à partir de sa date de naissance (et ramène l'être aimé) grace à la puissance du Machine Learning ancestrale.
import pandas as pd
from datetime import datetime, timedelta
from sklearn.tree import DecisionTreeClassifier
def predictionDuSigne(date):
'''
Algorithme de Machine Learning pour prédire le signe astrologique d'une personne
en fonction de sa date de naissance
Parameters
----------
date : str
Date de naissance au format 'JJ/MM/AAAA'.
Returns
-------
signe : str
Signe astrologique de la personne.
'''
#Génération des données d'entrainement :
df = trainData()
#Entrainement du modèle
dt_clf = DecisionTreeClassifier()
X_train = pd.DataFrame(columns=['annee','mois', 'jour'])
X_train['annee'] = df['date'].dt.year
X_train['mois'] = df['date'].dt.month
X_train['jour'] = df['date'].dt.day
dt_clf.fit(X_train,df['signe'])
#Prédiction
X = pd.DataFrame([[date[-4:],date[3:5],date[:2]]],columns=['annee','mois','jour'])
return dt_clf.predict(X)
def trainData():
'''
Génération des données d'apprentissage du modèle de Machine Learning
Crée un DataFrame Pandas contenant le signe associé à chaque jour
depuis le 1er Janvier 1970 jusqu'à aujourd'hui.
Returns
-------
df : DataFrame contenant le signe associé à chaque date depuis le 1er Janvier 1970 jusqu'à aujourd'hui.
'''
date = datetime(1970,1,1)
df = pd.DataFrame(columns=['date','signe'])
while date < datetime.now():
df.loc[len(df.index)] = [date, defSigneTrain(date)]
date += timedelta(days = 1)
return df
def defSigneTrain(date):
'''
Ptite fonction à la con rapide pour retourner le signe de chaque date de mes données d'entrainement.
Du code de non initié à la toute puissance du Machine Learning qui n'a que peut d'intéret en soit.
J'ai confié ça à un stagière qui utilise chatGPT.
Parameters
----------
date : datetime64
date à catégoriser.
Returns
-------
signe : str
Signe correspondant à la date du jeux de donnée.
'''
signes = {
'Bélier' : ['21/03','20/04'],
'Taureau' : ['21/04','20/05'],
'Gémeaux' : ['21/05','21/06'],
'Cancer' : ['22/06','22/07'],
'Lion': ['23/07','22/08'],
'Vierge' : ['23/08','22/09'],
'Balance' : ['23/09','22/10'],
'Scorpion' : ['23/10','22/11'],
'Sagittaire' : ['23/11','21/12'],
'Capricorne' : ['22/12','20/01'],
'Verseau' : ['21/01','18/02'],
'Poissons' : ['19/02','20/03'],
}
for signe in signes :
if date.month == int(signes[signe][0][-2:]) and date.day >= int(signes[signe][0][:2]):
return signe
if date.month == int(signes[signe][1][-2:]) and date.day <= int(signes[signe][1][:2]):
return signe Mise en pratique, attention les yeux !
import time
date_de_naissance = '01/04/2023'
debut = time.time()
signe = predictionDuSigne(date_de_naissance)
fin = time.time()
duree = round(fin - debut,1)
print(f"Le signe d'une personne née le {date_de_naissance} est {signe[0]}")
print(f"La fonction a pris {duree} secondes à s'exécuter.")>>> Le signe d'une personne née le 01/04/2023 est Bélier
>>> La fonction a pris 35.0 secondes à s'exécuter.
johanesa, chris-codd, shts-on-fire and Stobbaryojohanesa and Matthieu-Codditychris-codd
Metadata
Metadata
Assignees
Labels
movaicode/18Code en réponse au 18ème concours (mars 2023)Code en réponse au 18ème concours (mars 2023)