Skip to content
Snippets Groups Projects
Commit d57a2e2f authored by Nelly Barret's avatar Nelly Barret
Browse files

[D] deleted distribution file

parent 6149c4cf
Branches
No related tags found
No related merge requests found
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
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()
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment