2012-04-01 7 views
2

scatter plot Unten ist ein Matlab-Code für Bayes-Klassifikator, der beliebige Zahlen in ihre Klassen einteilt.Misclassification Fehlerrate und Genauigkeit

training = [3;5;17;19;24;27;31;38;45;48;52;56;66;69;73;78;84;88]; 
    target_class = [0;0;10;10;20;20;30;30;40;40;50;50;60;60;70;70;80;80]; 

     test = [1:2:90]'; 
    class = classify(test,training, target_class, 'diaglinear'); % Naive Bayes classifier 
[test class] 

(a) Wenn jemand Code-Schnipsel für die Berechnung der Bayes-Fehler für Fehlklassifikation und Genauigkeit liefern könnte. Ich ging durch Matlab Dokumentation bezüglich [class,err]=classify(...). Aber ich kann dem nicht folgen und arbeiten.

(b) Wie zeichnen Sie ein Streudiagramm und Histogramm, das die Anzahl der Datenpunkte angibt, die zu verschiedenen Klassen gehören? Ich habe es mit scatter(training(:),target_class(:)) ausprobiert, aber es gibt noch etwas!

(c) Wie mit crossvalidate() arbeiten? Ein Beispiel würde wirklich helfen. Danke.

Antwort

2

(a) Um Fehlklassifizierungsfehler zu berechnen, müssen Sie auch test_class wissen. Dann können Sie die Ausgabe class Variable mit test_class vergleichen.

misserr = sum(test_class~=class)./numel(test_class); 

Wenn Sie die Testklassen nicht das Argument, 2. Ausgabe haben err erhalten Sie eine Schätzung für misclassification Fehler geben generierte Modell auf dem Trainingssatz anwenden.

(b) Wenn Sie nur zwei Faktoren (Spalten) in den Trainingsdaten setzen Sie gerade tun können

scatter(training(:,1),training(:,2),[],target_class) 

Entsprechend Sie SCATTER3 für drei Faktoren verwenden können.

Für weitere Faktoren können Sie Hauptkomponentenanalyse mit PRINCOMP durchführen und 2 oder 3 erste Komponenten plotten.

UPDATE: Ich habe verpasst, dass Sie eigentlich nur einen Faktor haben. Ihre Scatter-Anweisung kann ziemlich gut funktionieren. Warum magst du es nicht? Sie können die Punkte auch anders färben, indem Sie target_class als 4. Argument hinzufügen. Sie können auch das erste und das zweite Argument austauschen, um die Darstellung zu verbessern.

(c) Sie CV mit CROSSVAL und CVPARTITION Funktionen aus Statistischem Toolbox ausführen können. Nützliche Beispiele finden Sie in der Dokumentation.

Hier ist eine weitere SO Frage - How to use a cross validation test with MATLAB? mit einigen zusätzlichen Optionen.

+0

Hi.Vielen Dank. (B) Wenn ich ein Streudiagramm verwende, erhalte ich mehrere Liniendiagramme anstelle von Streupunkten. Könnten Sie bitte den korrekten Code für eine Spalte/Faktordaten angeben? (c) Das Ziel der Verwendung von cv für meinen Fall ist der Vergleich der Leistung von 2 oder mehr Klassifikatoren, in diesem Fall Bayes gegen k-nn, PCA usw. Also, wie verwende ich CV Ich meine, welche Parameter eingespeist werden sollen vergleichender Zweck. Ich finde deine Beispiele leichter zu folgen als Matlabs! – Chaitali

+0

Sie sollten keine Zeilen mit Ihrer Streudiagrammanweisung erhalten. Ich habe 'Scatter (Training, Einsen (Größe (Training)), [], Target_Class)' versucht und es hat gut funktioniert. Y-Achse und Farbe hängen von 'target_class' ab. – yuk

+0

Sie können nicht alle diese Klassifikatoren mit CLASSIFY anwenden. Es hat nur 4 Arten von Klassifikatoren. Ich glaube, Sie können es mit einer Kreuzvalidierung machen. Siehe zum Beispiel Beispiel 2 im Dokument für CROSSVAL. Sie müssen verschiedene Vorhersagefunktionen bereitstellen (außer klassifizieren). Es wird Fehlklassifizierungsrate zurückgeben, die Sie verwenden können, um verschiedene Funktionen zu vergleichen. – yuk