Anomaly Detection mit BernoulliNB

mit matplotlib, NumPy, pandas, SciPy, SymPy und weiteren mathematischen Programmbibliotheken.
Antworten
Sqwan
User
Beiträge: 1
Registriert: Freitag 25. Oktober 2024, 09:42

Hallo zusammen,

derzeit schreibe ich an einer Arbeit, in der ich unter anderem Anomalien in einem Datensatz herausfiltern möchte. Dafür setze ich unter anderem den BernoulliNB ein. Der Datensatz enthält 1,2mio Daten in Form von Integern zwischen 0 und 4 im Normalfall. Der Anteil von Anomalien beträgt etwa 0,1%. Diese liegen zwischen 5 und 100.

Der fachlich relevante Code sieht derzeit so aus:

Code: Alles auswählen

y_train, y_test, c_train, c_test = train_test_split(y,trueClassification, test_size=0.2, stratify=trueClassification, random_state=42)

#bnb = BernoulliNB(alpha=0, force_alpha=True)
bnb = BernoulliNB()
model = bnb.fit(y_train, c_train)
predictedClassification = bnb.predict(y_test)

conf = confusion_matrix(c_test, predictedClassification)
tn = conf[0,0]
fp = conf[0,1]
fn = conf[1,0]
tp = conf[1,1]

print(f'tn: {tn}, fp: {fp}, fn: {fn}, tp: {tp}')
Meine Herausforderung ist nun, dass ich den Output nicht verstehe:

tn: 241678, fp: 0, fn: 242, tp: 0

Warum erkennt er garkeine Anomalien?

Das ist die Frequency Distribution der Most Common 5 im Datensatz:
[(2, 242105), (1, 241977), (0, 241811), (3, 241268), (4, 241230), (48, 23), (49, 22), (46, 22), (10, 21), (96, 20)]

Das sollte doch eigentlich reichen für eine statistische Identifikation.

Wäre echt cool wenn mir jemand erklären könnte, warum er dennoch nichts findet.

Vielen Dank schon mal
Sqwan
Antworten