52 lines
1.8 KiB
Python
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)
|