« Code DBSCAN » : différence entre les versions

De Wiki du LAMA (UMR 5127)
Aller à la navigation Aller à la recherche
Aucun résumé des modifications
Ligne 6 : Ligne 6 :


<nowiki>
<nowiki>
## Fonction de la détection d'anomalie Isolation Forest
## Fonction de la détection d'anomalie DBSCAN
def detectionAnomaly(donnee, taille_File):
def detectionAnomaly(donnee, taille_File):


liste_de_donnee = donnee
##on récupère le n-1 premiers éléments de la File
X = convert_list_database(liste_de_donnee) # <- base de donnees en panda
liste_de_donnee = donnee[0:taille_File]
df = convert_list_database(liste_de_donnee) # on défnit la base de donnée de ref


## Partie de la détection d'anomalies
# on ajoute le nouveau élément qu'on veut tester, donc df_motif est composé des n-1 derniers éléments de la File
db = DBSCAN(eps=0.5, min_samples=5).fit(X)
df_modif = convert_list_database(donnee[1:taille_File +1])
labels = db.labels_ # <- une liste de score


contamination_un_element = 1*1/taille_File # on veut qu'un seul élément contaminer parmi la taille de la file


if labels[len(labels)-1] == -1: # <- on regarde le dernier score et si -1 alors anomalie (bruit)
## Partie de la détection d'anomalies
print("--> Erreur détecter")
model = IsolationForest(n_estimators=100, max_samples='auto', contamination=contamination_un_element,max_features=1.0)


return labels[len(labels)-1]
model.fit(df[['c1']].values)

df_modif['anomaly']=model.predict(df[['c1']].values)

## on récupère le dernier élémment: celui que l'on souhaite regarder
dernier_elt = df_modif.tail(1).values
dernier_elt = dernier_elt.tolist()

if dernier_elt[0][len(dernier_elt)] == -1: # sinon anomalie détectée alors (à déterminer selon votre choix)
print("Erreur détecter")

## On peut aussi renvoyer la valeur de l'état du dernier élément qui pourra être réutiliser papr la suite
return dernier_elt[0][len(dernier_elt)]
</nowiki>
</nowiki>



Version du 26 mai 2023 à 11:45

Vous trouverez sur cette page le code pour la détection d'anomalies sur une File.

Code

Lien PDF

## Fonction de la détection d'anomalie DBSCAN
def detectionAnomaly(donnee, taille_File):

liste_de_donnee = donnee
X = convert_list_database(liste_de_donnee) # <- base de donnees en panda

## Partie de la détection d'anomalies
db = DBSCAN(eps=0.5, min_samples=5).fit(X)
labels = db.labels_ # <- une liste de score


if labels[len(labels)-1] == -1: # <- on regarde le dernier score et si -1 alors anomalie (bruit)
print("--> Erreur détecter")

return labels[len(labels)-1]

Explication des principales lignes