tp_apprentissage/part_limits_DBSCAN.py
2020-11-11 14:06:01 +01:00

52 lines
1.8 KiB
Python

import os
from scipy.io import arff
from sklearn.cluster import DBSCAN
from graphs import clustering_plot
###########################################
###########################################
### LIMITES DE LA METHODE DBSCAN ###
### ###
### Données choisies: ###
### aml28.arff --> 5 clusters ###
### atom.arff --> 2 clusters ###
### ###
### Etudiant: Abdel Kader CHABI SIKA B. ###
### DGEI / 5 SDBD 2020-2021 ###
###########################################
###########################################
files = ["aml28.arff","atom.arff"]
n_clusters = {"aml28.arff":5, "atom.arff":2}
print("Génération des figures ...")
# Création des différents dossiers d'output
try:
os.mkdir("DBSCANOutput")
except FileExistsError:
pass
try:
os.mkdir("DBSCANOutput/limits")
except FileExistsError:
pass
################################
### NOMBRE DE CLUSTERS CONNU ###
################################
for file in files:
# Chargement des données contenues dans le fichier
data = arff.loadarff(f="artificial/"+file)[0]
# Extraction des points contenus dans la donnée
points = [[c[0],c[1]] for c in data]
# Création d'un modèle KMeans pour le clustering des points
modele_dbscan = DBSCAN()
# Clustering et prédiction des clusters
predictions = modele_dbscan.fit_predict(points)
# Plotting des clusters
clustering_plot([p[0] for p in points], [p[1] for p in points], predictions, xlabel="Abcisses", ylabel="Ordonnes",
fig_title="Graphe de visualisation des clusters de "+file+"\nMéthode: DBSCAN",
output="DBSCANOutput/limits/bad_clusters_" + file.split(".")[0] + "_eps_and_minsamples_default.png")#, show=True)