CoolFace
Apppublic

Bobilay/DIT_Supervised_Learning_Final_Project

sourceHugging Faceapache-2.0updated 2y agoView on Hugging Face
0likes
model.py68 linesDownload Raw Back to root
1# Importer les packages2import pandas as pd3import numpy as np4from sklearn.preprocessing import LabelEncoder5from sklearn.preprocessing import StandardScaler6from sklearn.model_selection import GridSearchCV7from sklearn.tree import DecisionTreeClassifier8from sklearn.model_selection import train_test_split9 10 11class impModel:12 13    def __init__(self, csvDataPath):14        self.df = pd.read_csv(csvDataPath) # dataframe15        self.x = [] # variables prédicteurs16        self.y = [] # variable cible17        # Supprimer les doublons18        self.df.drop_duplicates(inplace = True)19 20 21    def encoder(self):22        # Créer un dictionnaire pour mapper les valeurs de 'etat'23        etat_mapping = {"D'occasion": 0, 'Réconditionné': 1, 'Neuf': 2, 'Venant': 3}24        # Remplacer les valeurs de 'etat' par les valeurs mappées25        self.df['etat'] = self.df['etat'].map(etat_mapping)26        27        # Créer différents encodeurs pour les variables catégorielles28        encoder0 = LabelEncoder() # pour adresse29        encoder1 = LabelEncoder() # pour marque30        encoders = [encoder0, encoder1]31        columns = [col for col in self.df.columns if self.df[col].dtype == 'object']32        for i in range(len(columns)):33            encoders[i].fit(self.df[columns[i]]) # le modèle prend le temps de reconnaitre les classes34            self.df[columns[i]] = encoders[i].transform(self.df[columns[i]]) # le modèle encode les variables35        return encoder0, encoder136    37    38    def normalization(self):39        # Fractionner les données40        self.x = self.df.drop('etat', axis = 1).values # variables prédicteurs41        self.y = self.df['etat'].values # variable cible42        # Instancier StandardScaler43        scaler = StandardScaler()44        # Normaliser x45        self.x = scaler.fit_transform(self.x)46        return scaler47    48    def decisionTree(self):49        # dictionnaire des params50        param_dt = {'criterion':['gini','entropy'],'max_depth':np.arange(3,15)}51        # instantier le modèle Decision Tree52        dt = DecisionTreeClassifier()53        # instantier le modèle gridsearch54        grid_dt = GridSearchCV(dt, param_dt, cv = 5)55        # entrainer le modèle56        grid_dt.fit(x_train, y_train)57        return grid_dt.best_params_58    59    def trainDeciionTree(self):60        #dt_best_params = decisionTree()61        # Splitter les données en train, val et test62        x_train, x_vt, y_train, y_vt = train_test_split(self.x, self.y , test_size = 0.2, random_state = 42)63        # Entrainer le modèle en utilisant les paramètres optimaux 'criterion': 'gini', 'max_depth': 364        dt = DecisionTreeClassifier(criterion = 'gini', max_depth = 3)65        # Entrainement66        dt.fit(x_train, y_train)67        return dt68