diff --git a/predihood/classes/distribution.md b/predihood/classes/distribution.md deleted file mode 100644 index 112a43ef44478f1cc6c0185b794f8ebbdc62859e..0000000000000000000000000000000000000000 --- a/predihood/classes/distribution.md +++ /dev/null @@ -1,39 +0,0 @@ -Mon idée de base était de tracer les courbes qui correspondent à la distribution des indicateurs dans le but de pouvoir les comparer. - -Les indicateurs utilisés sont ceux de la liste de taille 10. - -Pour chaque IRIS expertisé : -1. Récupérer ses indicateurs normalisés selon la liste de taille 10 -2. Récupérer la valeur maximale pour les indicateurs normalisées parmi tout le jeu de données des IRIS expertisés -3. Tracer les points (i.e. les valeurs des indicateurs normalisés) dans un graphe et mettre la valeur maximale de l’axe y à la valeur maximale du jeu de données. Cela permet d’avoir des courbes visuellement sur la même échelle et donc de pouvoir les comparer équitablement -4. Relier les points entre eux. - - -Idées pour la similarité entre deux courbes : - -Soit C1 et C2 les deux courbes à comparer. Chaque est composée de 10 indicateurs, classés dans le même ordre. Les deux courbes ont pour valeur maximale de l’ordonnée la velue m - -**1ère idée** : calculer les différences entre les indicateurs uns à un et les cumuler pour calculer la dissimilarité. -Formule utilisée : - -$$ dissimilarité = somme sur i de 1 à nb_points(abs(Yi1 - Yi2))/(max_value*nb_points) $$ - -Similarité = (1-dissimilarity) * 100 - -2ème idée : prendre en compte l’inclinaison des pentes pour augmenter le score de dissimilarité quand les points sont au même niveau mais que la courbe n’est pas ressemblante - -Formule utilisée : -dissimilarité = somme sur i de 1 à nb_points (abs(Yi1 - Yi2) / max_value + facteur_dissim(Xi1, Yi1, Xi2, Yi2) ) / 2*nb_points - -Mais cette formule ne convient pas si les courbes sont identiques mais placées à des niveaux différents. - - -Autre question que je me posais au niveau de la normalisation : est-ce que les valeurs normalisées ont un - - -Après avoir calculé les similarité, il fait regrouper les courbes "qui se ressemblent", i.e. celles qui ont une grande similarité. -Plusieurs verrous : -- avec un nombre élevé d'IRIS, va prendre pas mal de temps -- - -Je n'ai pas encore trouvé de solution implémentable pour le moment. J'avais pensé à calculer les similarités deux à deux mais après je n'ai pas encore trouvé de moyens pour les regrouper. \ No newline at end of file diff --git a/predihood/temp.py b/predihood/temp.py new file mode 100644 index 0000000000000000000000000000000000000000..3ea63a13d49acebd0cda3eecd1802d3aaec977b4 --- /dev/null +++ b/predihood/temp.py @@ -0,0 +1,89 @@ +import pandas as pd +from sklearn.cluster import KMeans + +from predihood.classes.Data import Data +from predihood.classes.Dataset import Dataset +from predihood.classes.Method import Method +from predihood.config import ENVIRONMENT_VALUES + + +def geo_position(): + file = pd.read_csv("generated_files/cleaned_data.csv") + north, south, east, west, southEast, northEast, southWest, northWest, centre, problem = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + + for index, line in file.iterrows(): + # print(line) + # print(line["old_landscape"]) + if isinstance(line["old_geographical_position"], str): + old_val = line["old_geographical_position"].split()[0].upper() + if old_val == "NORD": + north += 1 + elif old_val == "SUD": + south += 1 + elif old_val == "EST": + east += 1 + elif old_val == "OUEST": + west += 1 + elif old_val == "CENTRE": + centre += 1 + elif old_val == "NORD-EST": + northEast += 1 + elif old_val == "NORD-OUEST": + northWest += 1 + elif old_val == "SUD-EST": + southEast += 1 + elif old_val == "SUD-OUEST": + southWest += 1 + else: + problem += 1 + print(line["old_geographical_position"]) + else: + print(line["old_geographical_position"]) + problem += 1 + + if isinstance(line["new_geographical_position"], str): + new_val = line["new_geographical_position"].split()[0].upper() + if new_val == "NORD": + north += 1 + elif new_val == "SUD": + south += 1 + elif new_val == "EST": + east += 1 + elif new_val == "OUEST": + west += 1 + elif new_val == "CENTRE": + centre += 1 + elif new_val == "NORD-EST": + northEast += 1 + elif new_val == "NORD-OUEST": + northWest += 1 + elif new_val == "SUD-EST": + southEast += 1 + elif new_val == "SUD-OUEST": + southWest += 1 + else: + problem += 1 + print(line["new_geographical_position"]) + else: + print(line["new_geographical_position"]) + problem += 1 + + print(north, south, east, west, southEast, northEast, southWest, northWest, centre, " - ", problem) + + +def k_means_v1(): + data = Data() + data.init_all_in_one() + for env in ENVIRONMENT_VALUES: + dataset = Dataset(data, env, "unsupervised") + # dataset.selected_indicators = + nb_clust = len(ENVIRONMENT_VALUES[env]) + print(dataset.selected_indicators) + + estimator = Method("kmeans", dataset, KMeans(n_clusters=nb_clust)) + estimator.fit() + + +if __name__ == '__main__': + # k_means_v1() + geo_position()