123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 |
- # -*- coding: utf-8 -*-
- """
- Created on Sat Nov 20 21:28:40 2021
-
- @author: huguet
- """
-
- from myplotlib import print_1d_data, print_2d_data, print_dendrogramme
- from mydatalib import (extract_data_2d, scale_data,
- apply_agglomerative_clustering, evaluate)
-
-
- ##################################################################
- # READ a data set (arff format)
-
- # Parser un fichier de données au format arff
- # datanp est un tableau (numpy) d'exemples avec pour chacun la liste
- # des valeurs des features
-
- # Note 1 :
- # dans les jeux de données considérés : 2 features (dimension 2 seulement)
- # t =np.array([[1,2], [3,4], [5,6], [7,8]])
- #
- # Note 2 :
- # le jeu de données contient aussi un numéro de cluster pour chaque point
- # --> IGNORER CETTE INFORMATION ....
- # 2d-4c-no9.arff xclara.arff
-
- path = './artificial/'
- dataset_name = "xclara"
- save = True
-
- # Types de linkage : single, average, complete, ward linkage
- linkage = "complete"
-
- print("-----------------------------------------------------------")
- print(" Chargement du dataset : " + dataset_name)
- data = extract_data_2d(path + dataset_name)
- print_2d_data(data, dataset_name=dataset_name +
- "_brutes", stop=False, save=save)
-
- print("-----------------------------------------------------------")
- print(" Mise à l'échelle")
- data_scaled = scale_data(data)
- print_2d_data(data_scaled, dataset_name=dataset_name +
- "_scaled", stop=False, save=save)
-
- print("-----------------------------------------------------------")
- print(" Création du dendrogramme : linkage " + linkage)
- print_dendrogramme(data_scaled, dataset_name=dataset_name,
- linkage=linkage, stop=False)
-
-
- k_max = 20
- print("-----------------------------------------------------------")
- print(" Création clusters : linkage " +
- linkage + ", k=(0 to " + str(k_max) + ")")
- # Application du clustering agglomeratif pour plusieurs valeurs de k
- # et evaluation de la solution
- k = []
- durations = []
- silouettes = []
- daviess = []
- calinskis = []
- for i in range(2, k_max):
- # Application du clustering agglomeratif
- (model, duration) = apply_agglomerative_clustering(
- data_scaled, k=i, linkage=linkage)
- # Affichage des clusters
- print_2d_data(data_scaled, dataset_name=dataset_name,
- method_name="agglomerative_" + linkage, k=i,
- stop=False, save=save, c=model.labels_)
- # Evaluation de la solution de clustering
- (silouette, davies, calinski) = evaluate(data_scaled, model)
- # Enregistrement des valeurs
- k += [i]
- durations += [duration]
- silouettes += [silouette]
- daviess += [davies]
- calinskis += [calinski]
-
- # Affichage des résultats
- print_1d_data(k, k, x_name="k", y_name="k", dataset_name=dataset_name,
- method_name="agglomerative_" + linkage, stop=False, save=save)
- print_1d_data(k, durations, x_name="k", y_name="temps_de_calcul", y_unit="ms",
- dataset_name=dataset_name,
- method_name="agglomerative_" + linkage, stop=False, save=save)
- print_1d_data(k, silouettes, x_name="k", y_name="coeficient_de_silhouette",
- dataset_name=dataset_name,
- method_name="agglomerative_" + linkage, stop=False, save=save)
- print_1d_data(k, daviess, x_name="k", y_name="coeficient_de_Davies",
- dataset_name=dataset_name,
- method_name="agglomerative_" + linkage, stop=False, save=save)
- print_1d_data(k, calinskis, x_name="k", y_name="coeficient_de_Calinski",
- dataset_name=dataset_name,
- method_name="agglomerative_" + linkage, stop=False, save=save)
|