2016-11-19 3 views
0

Ich habe knn Algorithmus für meinen Datensatz entwickelt. Mein Datensatz enthält 5000 * 17 Werte. In diesem Datensatz teile ich meine Daten als 4000 für die Validierung und 1000 für das Training. Meine Frage ist am Ende mein Fehlerprozentsatz ist 0.0158 für Trainingsdaten. Bedeutet es, dass mein Algorithmus gut ist für kn ODER habe ich einen Fehler gemacht? Was denkst du für meinen Algorithmus?knn Algorithmus Fehler Prozentsatz

+0

Ich nehme an, Ihr Fehlerprozentsatz ist 1,58%? Wenn es 0,0158% wäre, wäre das ein fantastisches Ergebnis. Ich würde sagen, 1,5% ist ein sehr gutes Ergebnis, aber es hängt ein wenig von den Daten und der Anwendung ab. –

Antwort

0

Dies ist zu lang für einen Kommentar.

Die Bewertung von k-NN auf dem Trainingssatz ist ziemlich gefährlich, es sei denn, Sie tun es richtig. Der Grund ist, dass jedes Element sein eigener nächster Nachbar ist. Daher betrügt der Algorithmus.

Sie geben nicht an, was "k" ist. Offensichtlich ist, wenn k = 1, der nächste Nachbar der Gegenstand selbst (oder vielleicht ein Gegenstand mit denselben Schlüsselwerten).

Wenn Sie also den Code selbst schreiben, sollten Sie ihn für jede Trainingsinstanz aus der Gruppe der Nachbarn ausschließen. Sie können dies manuell tun. Oder Sie können einfach den Algorithmus im Validierungssatz auswerten und die Ergebnisse im Trainingssatz ignorieren.

Eigentlich sollten Sie für keinen Algorithmus den Trainingssatz für die Validierung verwenden, wenn dies möglich ist.

+0

Eigentlich habe ich den Punkt selbst nicht aufgenommen, indem ich seine Werte jedes Mal ändere. Ich finde nur k-Punkte, die minimale Abstände zum aktuellen Punkt haben. Ich gebe Werte basierend auf den Werten dieser k Punkte. Ich bekomme nur einen kleineren Fehler im ersten Lauf und es macht mich misstrauisch gegenüber meinem Algorithmus. – Muaa2404

+0

@ Muaa2404. . . Denk darüber nach. Die Entfernung von einem Punkt in dem Trainingssatz zu sich selbst ist 0, so dass er immer in den nächsten Nachbarn enthalten ist (oder zumindest ein Kandidat, wenn es Bindungen gibt). Das ist Betrug. –

Verwandte Themen