WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Confusion Matrizen nur Accuracy plotten

 

Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 31.01.2019, 10:22     Titel:
  Antworten mit Zitat      
Hallo,

ich verstehe offen gesagt nicht, was da nun was ist.

Wenn du Daten wie angehängt hast, dann bekommst du mit
Code:
diag(M) ./ sum(M, 2) * 100

die Accuracy pro Datei.

Mit dir kannst du eine Liste der Dateinamen erzeugen und über diese iterieren, z.B.
Code:
list = dir('*.xlsx');
for k = 1:length(list)
   currentFile = list(k).name;
   % Verarbeiten von currentFile
   M = xlsread(currentFile); % oder auch nur einen Bereich der Datei
end


Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen


bwin
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 33
Anmeldedatum: 30.01.19
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 31.01.2019, 10:27     Titel:
  Antworten mit Zitat      
aber in jeden file sind verschiedene Klassen drin nicht nur eine und diese sind gemischt.
und pro klasse muss ich die accuracy berechnen .
und dann würde ich die einzelnen Klassen gerne mit den anderen files vergleichen
verstehst du micht?

im Anhang noch mal ein bsp wie die files ausschauen nur das da nicht 10 werte drin stehen pro file sondern 1000. und Banane, apfel usw sind die Klassen

confusion.PNG
 Beschreibung:
Beispiel

Download
 Dateiname:  confusion.PNG
 Dateigröße:  15.78 KB
 Heruntergeladen:  293 mal


Zuletzt bearbeitet von bwin am 31.01.2019, 10:37, insgesamt einmal bearbeitet
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 31.01.2019, 10:35     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
aber in jeden file sind verschiedene Klassen drin nicht nur eine und diese sind gemischt.

Sind die Klassen nun gleich oder nicht? Was bedeutet gemischt in diesem Zusammenhang?

Zitat:
und pro klasse muss ich die accuracy berechnen .

Das macht mein Codevorschlag für die Beispieldatei. Hast du den Vorschlag denn ausprobiert?
Wenn deine tatsächlichen Dateien anders aussehen, dann stelle bitte die richtigen Dateien zur Verfügung.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
bwin
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 33
Anmeldedatum: 30.01.19
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 31.01.2019, 10:38     Titel:
  Antworten mit Zitat      
habe ein file hinzugefügt bei meinen vorherigen bsp
Private Nachricht senden Benutzer-Profile anzeigen
 
bwin
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 33
Anmeldedatum: 30.01.19
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 31.01.2019, 10:41     Titel:
  Antworten mit Zitat      
dein code passt nicht.
im file muss er erst in spalte 1 schauen wenn apfel vorhanden ist dann schaue in spalte 2 ob auch apfel vorhanden ist wenn ja dann zähle wie oft es übereinstimmt und wenn kein apfel in spalte 2 ist dann speicher auch die anzahl in einer anderen variable. dass musst du dann auch für Karotte und Banane machen

danach ist die formel für die accuracy : 100* anzahl Übereinstimmung apfel/ nicht Übereinstimmung klasse apfel

und danach kann man erst den vergleich der anderen files starten
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 31.01.2019, 11:15     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
dein code passt nicht.

Für deine Beispieldatei liefert der Code die richtigen Ergebnisse.
Wenn das bei anderen Dateien nicht der Fall ist, dann poste bitte eine solche Datei (vorzugsweise als Anhang statt als Screenshot, damit man die Daten nicht abtippen muss) einschließlich der dafür erwarteten Ergebnisse.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
bwin
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 33
Anmeldedatum: 30.01.19
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 31.01.2019, 11:34     Titel:
  Antworten mit Zitat      
danke aber bei mir funktioniert das ganze nicht!
die Orginal Datei darf ich nicht veröffentlichen sorry

es fehlt schon am anfang des codes das alle NaN aus der matrix geschmissen werden. dies habe ich mit diesen befehl gemacht
Code:

a(any(isnan(a),2),:) = [];
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 31.01.2019, 11:43     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
aber bei mir funktioniert das ganze nicht!

Das ist eine sehr pauschale Aussage.

Zitat:
die Orginal Datei darf ich nicht veröffentlichen sorry

Es muss nicht die Originaldatei sein. Es sollte aber eine Datei sein, die in der Struktur der Originaldatei ausreichend ähnelt. Welche Zahlen da nun genau drinstehen und wie die Klassen heißen, ist egal. Ohne diese Information werden wir aber wohl nicht weiterkommen.

Zitat:
es fehlt schon am anfang des codes das alle NaN aus der matrix geschmissen werden.

Jetzt hat der Thread um die 20 Beiträge, und es ist das erste Mal die Rede von einer NaN-Problematik. Ob es sinnvoll ist, Zeilen mit NaN komplett zu entfernen, hängt von der tatsächlichen Dateistruktur ab, die ich anscheinend leider immer noch nicht kenne.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
bwin
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 33
Anmeldedatum: 30.01.19
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 31.01.2019, 12:56     Titel:
  Antworten mit Zitat      
ich habe das mit den nan schon gelöst nur ohne schleife. ja es muss gelöscht werden
Private Nachricht senden Benutzer-Profile anzeigen
 
bwin
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 33
Anmeldedatum: 30.01.19
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 31.01.2019, 13:06     Titel: test dok
  Antworten mit Zitat      
anhang ein test dokument
achso Datei unmöglich hier anzufügen. csv wie auch excel sind hier verboten
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 31.01.2019, 13:36     Titel:
  Antworten mit Zitat      
Hallo,

Datei im Zweifelsfall zippen und dann anhängen.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
bwin
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 33
Anmeldedatum: 30.01.19
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 31.01.2019, 13:41     Titel: file
  Antworten mit Zitat      
testfile

Zuletzt bearbeitet von bwin am 31.01.2019, 15:22, insgesamt einmal bearbeitet
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 31.01.2019, 13:49     Titel:
  Antworten mit Zitat      
Hallo,

mir ist nicht klar, was diese Datei jetzt mit der Aufgabenstellung zu tun hat.

Die interessanten Spalten scheinen E und F zu sein, aber das sind eben nur zwei Spalten. Bisher bin ich davon ausgegangen, dass du eine quadratische Matrix hast, in der steht, welche Kategorie als welche erkannt wurde. Wo ist da der Zusammenhang zu diesen Daten?

Wenn du Code hast, der die Daten entsprechend vorverarbeitet, dann teile ihn bitte.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
bwin
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 33
Anmeldedatum: 30.01.19
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 31.01.2019, 14:07     Titel:
  Antworten mit Zitat      
du wolltest wissen wie die originale Datei aussieht, diese sieht so auf!

natürlich sind die interessanten spalten nur e und f

mein code von anfang

Code:

a = xlsread('......xlsx','E:F');
a(any(isnan(a),2),:) = []; %clear all nan
ind1 = find(a(:,1)==1);
a_ind1 = a(ind1,:);

 
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 31.01.2019, 16:55     Titel:
  Antworten mit Zitat      
Hallo,

ich möchte dir in erster Linie helfen, dein Problem zu lösen.

Wenn jemand ein Problem in vereinfachter Form darstellen kann und das selbst auf sein komplizierteres Problem übertragen kann, sehr gerne. Wenn das aber nicht klappt, braucht man das kompliziertere Problem und, sofern für Außenstehende nicht offensichtlich, den Zusammenhang zum vereinfachten Problem.

Wenn ich das richtig verstehe, kann man die Berechnung von Accuracy so machen:
Code:
accu = zeros(1, max(a(:)));
for k = 1:max(a(:))
    ind = a(:,1)==k;
    accu(k) = sum(a(ind,2)==k) / numel(a(ind,2)) * 100;
end


Es kann sein, dass man erste und zweite Spalte vertauschen muss. Mir ist nämlich nicht 100%ig klar, was in dem Beispiel nun das Ergebnis werden soll.

Dann braucht man noch eine zweite Schleife über die Dateien. Aus accu würde dann eine Matrix statt eines Zeilenvektors.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen

Gehe zu Seite Zurück  1, 2, 3  Weiter

Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2024 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.