#!/usr/lib/python3 # -*- coding: UTF-8 -*- # importation des différents modules import numpy as np import pandas as pd from sklearn.model_selection import train_test_split from sklearn import linear_model from sklearn.linear_model import LogisticRegression #from IPython.core.display import display, HTML # Récupération des données initiales df=pd.read_csv("https://kopadata.fr/data-formation-p6/inputs/notes.csv") # conversion de la variable 'is_genuine' en variable quantitative df.loc[df["is_genuine"] == True, 'is_genuine']=1 df.loc[df["is_genuine"] == False, 'is_genuine']=0 df.is_genuine=df.is_genuine.astype('int') # variables explicatives x_cols = ['length', 'height_left', 'height_right', 'margin_low', 'margin_up', 'diagonal'] # variable à expliquer y_col = 'is_genuine' # df variables explicatives X = df[x_cols] # df variable à expliquer y = df[[y_col]] y=y.astype('int') # partition aléatoire du jeu de données en 75% pour créer le modèle, 25% pour tester le modèle X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, stratify = y) # instanciation du modele logreg=linear_model.LogisticRegression(solver='liblinear') # entrainement du modèle logreg.fit(X_train,np.ravel(y_train)) #=================================================================== # Programme de détection #=================================================================== # récupération du fichier à tester data_pgm = pd.read_csv("https://kopadata.fr/data-formation-p6/upload/test_billet.csv") # variables explicatives du jeu à tester X_pgm = data_pgm[x_cols] # Probabilités associées au jeu testé proba_pred_pgm = logreg.predict_proba(X_pgm) # Probabilités que le billet soit vrai ('is_genuine = True') proba_vrai_billet_pgm=proba_pred_pgm[:,1] # Prédiction : vrai billet si proba > 0.5 y_pred_pgm = logreg.predict(X_pgm) # Ajout colonne 'proba vrai billet' data_pgm['proba_vrai_billet'] = proba_vrai_billet_pgm # ajout de la colonne 'prediction' : 0 ou 1 data_pgm['predictions'] = y_pred_pgm # on change le 0 et 1 par faux et vrai billet data_pgm['predictions'] = data_pgm['predictions'].apply(lambda x: "Vrai Billet" if x == 1 else "Faux Billet") print('
') print('

Présentation des résultats

') print('

Un billet sera considéré comme vrai si la probabilité associée est supérieure à 50%.

') print('
') for i in range(data_pgm.shape[0]): id = data_pgm.loc[i, 'id'] proba = data_pgm.loc[i, 'proba_vrai_billet']*100 print(f"   • Pour le billet {id}, la probabilité que ce billet soit un vrai billet est de {proba:.2f}%") if proba < 50: print(f'         {id}  :  FAUX BILLET') else: print(f'         {id}  :  VRAI BILLET') print() print('
') print('
')