Mit Numpy Genauigkeit berechnen

mit matplotlib, NumPy, pandas, SciPy, SymPy und weiteren mathematischen Programmbibliotheken.
Antworten
meister
User
Beiträge: 3
Registriert: Freitag 5. April 2019, 07:43

Moinsen,
Ich schlage mich nun seit einiger Zeit mit dem Problem herum und finde einfach keine Lösung. :?:
Problem ist folgendes: Die Genauigkeit eines Klassifiezirers soll mithilfe der numpy.mean() funktion berechnet werden.

#D ist eine Matrix mit 262 Zeilen und 14 spalten
#klassifizierer ist eine Funktion die mir zufällig eine 1 oder null ausgibt.
# Die 14 Spalte hat den wert 1 oder null. Wenn die Zufallszahl übereinstimmt dann ist das Ergebniss korrekt wenn nicht dann ist es falsch-

def accuracy(D, klassifizierer):

korrekt = #Hier soll der code stehen
genauigkeit = np.mean(korrekt)
return genauigkeit

meine Idee war das hier:
korrekt = (D[:, 13] == klassifizierer)

aber anstatt die Funktion bei jedem Wert aufs neue auszuführen, wird nur am Anfang die Funktion ausgeführt.
Wie kann man das beheben?[

Ich wäre sehr dankbar wenn ihr mir helfen könntet. :)
Sirius3
User
Beiträge: 17750
Registriert: Sonntag 21. Oktober 2012, 17:20

Was meinst Du mit "bei jedem Wert aufs neue auszuführen"? Funktionen werden nur dann ausgeführt, wenn Du das im Code sagst. Und im Moment rufst Du die Funktion noch gar nicht auf.
meister
User
Beiträge: 3
Registriert: Freitag 5. April 2019, 07:43

Wie rufe ich den die übergebende Funktion auf?
Immoment erstellt die funktion nur zufällig die 1 oder 0.

meine 2.te Idee war das hier: korrekt= D[:, 13] == [classifier for i in D]
Sirius3
User
Beiträge: 17750
Registriert: Sonntag 21. Oktober 2012, 17:20

Mache ein ausführbares Bespiel mit Inputdaten und Ausgabe sowie gewünschte Ausgabe.
Benutzeravatar
ThomasL
User
Beiträge: 1366
Registriert: Montag 14. Mai 2018, 14:44
Wohnort: Kreis Unna NRW

Prinzipiell bist du schon nah dran.
Du kannst deine Funktion klassifizierer aber nicht direkt auf ein numpy array anwenden
sondern musst diese benutzen um ein 1D array zu erstellen, welches du dann mit deiner 14. Spalte in der Matrix vergleichen kannst.

Code: Alles auswählen

import numpy as np

def klassifizierer():
    return np.random.choice([0,1])

def accuracy(D, classifier):
    clf = np.array([classifier() for i in range(D.shape[0])])  # Eventuell gibt es hierfür eine elegante numpy Funktion die mir auf die schnelle nicht einfiel
    korrekt = D[:,-1] == clf
    genauigkeit = np.mean(korrekt)
    return genauigkeit

D = np.ones((262,14))
accuracy(D, klassifizierer)
Ich bin Pazifist und greife niemanden an, auch nicht mit Worten.
Für alle meine Code Beispiele gilt: "There is always a better way."
https://projecteuler.net/profile/Brotherluii.png
meister
User
Beiträge: 3
Registriert: Freitag 5. April 2019, 07:43

Danke, dass ihr mir alle so schnell helfen konntet. 8)
Antworten