import os import sys parent_dir_name = os.path.dirname(os.path.dirname(os.path.realpath(__file__))) sys.path.append(parent_dir_name + "/3nar/code") from nnnar import * from knn import * import matplotlib.pyplot as plt import numpy as np import pandas as pd # varriable globale trainTestRatio = 0.8 nnnarSubDiv = 10 # initialisation du modèle if (sys.argv[1] == "knn"): model = Knn() else: model = Nnnar(4, 0, 100, nnnarSubDiv) # lecture des données df = pd.read_csv('./data/maison.csv') df = df.iloc[:, 0:5] # Normalisation des données df.iloc[:, 1] = df.iloc[:, 1] - df.iloc[:, 1].min() df.iloc[:, 2] = df.iloc[:, 2] - df.iloc[:, 2].min() df.iloc[:, 3] = df.iloc[:, 3] - df.iloc[:, 3].min() df.iloc[:, 4] = df.iloc[:, 4] - df.iloc[:, 4].min() df.iloc[:, 1] = df.iloc[:, 1] / df.iloc[:, 1].max() df.iloc[:, 2] = df.iloc[:, 2] / df.iloc[:, 2].max() df.iloc[:, 3] = df.iloc[:, 3] / df.iloc[:, 3].max() df.iloc[:, 4] = df.iloc[:, 4] / df.iloc[:, 4].max() df.iloc[:, 1:5] = df.iloc[:, 1:5] * 99 # Création des données d'entrainement et de test train = df.sample(frac=trainTestRatio) test = df.drop(train.index) # Entrainement du modèle coord = train.iloc[:, 1:].values value = train.iloc[:, 0].values for i in range(len(coord)): model.addPoint(np.array(coord[i]), np.array([value[i]])) # Test du modèles coord = test.iloc[:, 1:].values value = test.iloc[:, 0].values nbError = 0 for i in range(len(coord)): v = model.getValueOfPoint(np.array(coord[i]),5)[0] if v != value[i]: nbError += 100*abs(v-value[i])/value.max() print("accuracy moyenne:",str(100-nbError/len(coord)))