if __name__ == "__main__": dataset = Dataset(drop_weight=True) higgs_df = dataset.get_df() Xtrain, Xtest, ytrain, ytest = dataset.split_train_test(fill_nan=True) weight_train, weight_test = dataset.get_weight_train_test() eval_ = Evaluation() #### Tests de nos différents modèles de bases #### #random ypred = pure_random_model(Xtest) eval_.affichage_score("Random", ytest, ypred, weights=weight_test) #sratified stratified = Stratified() stratified.fit(Xtrain, ytrain) ypred = stratified.predict(Xtest, ytest) eval_.affichage_score("Stratified", ytest, ypred, weights=weight_test) #frequency frequency = Frequency() frequency.fit(Xtrain, ytrain) ypred = frequency.predict(Xtest, ytest) eval_.affichage_score("Frequency", ytest, ypred, weights=weight_test) """ # Classifieur faible : Arbre de décision de profondeur 1 Weight = True
print(" ------------ ENTRAINEMENT RESEAU DE NEURONES ---------------") for ep in range(n_epoch): print("EPOCHS : ",ep) for i, (x, y) in enumerate(train_loader): model.train() y = y#.float() x = x#.double() pred = model(x)#.double() print(pred) loss = criterion(pred, y) # print('loss', loss ," Prédiction : ", pred, "y True : ",y) writer.add_scalar('Loss/train', loss, ep) loss.backward() optimizer.step() optimizer.zero_grad() for i,(x,y) in enumerate(test_loader): with torch.no_grad(): model.eval() pred = model(x) loss = criterion(pred,y) # print('loss', loss ," Prédiction : ", pred, "y True : ",y) writer.add_scalar('Loss/validation', loss, ep) ypred = dataset_train.get_prediction(ynn) eval_.affichage_score("Neural Network ",ytest,ypred,weights=weight_test)
import random,string,math,csv import numpy as np import pandas as pd import sys sys.path.insert(0, '/Users/ykarmim/Documents/Cours/Master/M2/REDS/src') # Mettre le path vers src sinon l'import fail. from dataset import Dataset from evaluation import Evaluation from xgboost import XGBClassifier if __name__ == "__main__": dataset = Dataset(drop_weight=True) higgs_df = dataset.get_df() Xtrain,Xtest, ytrain,ytest = dataset.split_train_test(fill_nan=False) # XgBoost prend en compte les valeurs NaN. weight_train,weight_test = dataset.get_weight_train_test() eval_ = Evaluation() model = XGBClassifier() model.fit(Xtrain, ytrain) ypred = model.predict(Xtest) eval_.affichage_score("XGBoost",ytest,ypred,weights=weight_test)
if __name__ == "__main__": dataset = Dataset(drop_weight=True) higgs_df = dataset.get_df() Xtrain,Xtest, ytrain,ytest = dataset.split_train_test(fill_nan=True) weight_train,weight_test = dataset.get_weight_train_test() eval_ = Evaluation() #Decision tree automatic depth tree_1 = DecisionTreeClassifier(random_state=0) tree_1.fit(Xtrain,ytrain) ypred = tree_1.predict(Xtest) ypred_train = tree_1.predict(Xtrain) eval_.affichage_score("Decision Tree automatic depth Weight = False, Test",ytest,ypred,weights=weight_test) eval_.affichage_score("Decision Tree automatic depth Weight = False, Train",ytrain,ypred_train,weights=weight_train) # Decision tree fixed depth 5 tree_1 = DecisionTreeClassifier(random_state=0,max_depth=5) tree_1.fit(Xtrain,ytrain) ypred = tree_1.predict(Xtest) ypred_train = tree_1.predict(Xtrain) eval_.affichage_score("Decision Tree depth 5 Weight = False, Test",ytest,ypred,weights=weight_test) eval_.affichage_score("Decision Tree depth 5 Weight = False, Train",ytrain,ypred_train,weights=weight_train) # à faire : cross val pour trouver le meilleur hyper paramètre pour la profondeur maximal de l'arbre
ypred_train = tree_1.predict(Xtrain) eval_.affichage_score("Decision Tree depth 5 Weight = False, Test",ytest,ypred,weights=weight_test) eval_.affichage_score("Decision Tree depth 5 Weight = False, Train",ytrain,ypred_train,weights=weight_train) # à faire : cross val pour trouver le meilleur hyper paramètre pour la profondeur maximal de l'arbre """ # Random Forest Bagging bootstrap = True , n_estimator = 100 optim_param = pd.read_csv('results/optimal_parameters_rf.csv') params = optim_param['params'] params = ast.literal_eval(params[0]) rf = RandomForestClassifier(**params) rf.fit(Xtrain, ytrain) ypred = rf.predict(scale(Xtest)) eval_.affichage_score("Random Forest bootstrap = True ", ytest, ypred, weights=weight_test) """ rf = RandomForestClassifier(n_estimators=100,bootstrap=False,max_depth=5) rf.fit(Xtrain,ytrain) ypred = rf.predict(Xtest) eval_.affichage_score("Random Forest bootstrap = False ",ytest,ypred,weights=weight_test) # à faire cross val pour les hyper-paramètres """ # Extra Trees """Extra trees classifier. This classifier is very similar to a random forest; in extremely randomized trees, randomness goes one step further in the way splits are computed. As in random forests, a random subset of candidate features is used, but instead of looking for the most discriminative thresholds, thresholds are drawn at random for each candidate feature and the best of