« Code DBSCAN » : différence entre les versions
Aller à la navigation
Aller à la recherche
Aucun résumé des modifications |
(→Code) |
||
Ligne 6 : | Ligne 6 : | ||
<nowiki> |
<nowiki> |
||
## Fonction de la détection d'anomalie |
## Fonction de la détection d'anomalie DBSCAN |
||
def detectionAnomaly(donnee, taille_File): |
def detectionAnomaly(donnee, taille_File): |
||
⚫ | |||
##on récupère le n-1 premiers éléments de la File |
|||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
# 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) |
|||
⚫ | |||
⚫ | |||
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) |
|||
⚫ | |||
## 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
## 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]