2016-12-28 4 views
0

Ich habe einen Datensatz von Buchstabenbildern. Ich habe einen naiven Bayes-Klassifikator erstellt, um den Inhalt von Testdaten vorherzusagen. Ich möchte ein Diagramm der Anzahl der für jedes Zeichen korrekt klassifizierten Bilder erstellen.Wie kann ich Buchstabenfrequenzen in R plotten?

Eine Handlung oder ein Barplot oder ein Histogramm spielt keine Rolle. Ich möchte es einfach sehen können.

Dies ist mein Code. Vielen Dank im Voraus. Schätze es wirklich .

allimages=list() 
meanimages=list() 
sdimages=list() 
cha<-array(NA,c(12,12,7)) 
dim(cha) 
cha2<-array(NA,c(12,12,2)) 
dim(cha2) 
cha2 

for(f in 1:length(letters)){ 
    #array for every character 
    for (i in 1:7){ 
    cha[,,i]=readJPEG(paste("Train/",list.files("Train/")[i+(f-1)*7],sep="")) 
    } 
    allimages[[f]]<-cha 
} 

allimages[[26]][1] 
cha[1][] 

for (ch in 1:length(allimages)){ 

    meanimages[[ch]]= apply(allimages[[ch]],c(1,2),mean) 
    sdimages[[ch]]= apply(allimages[[ch]],c(1,2),sd) 

} 
meanimages 

test_images=list() 
for(f in 1:length(letters)){ 
    #array for every character 
    for (i in 1:2){ 
    cha2[,,i]=readJPEG(paste("Test/",list.files("Test/")[i+(f-1)*2],sep="")) 
    } 
    test_images[[f]]<-cha2 
} 

ind=5 
ddd=1 
tr=1 

i=array(unlist(allimages),dim=c(144,26*7)) 
dim(i) 

mi=array(unlist(meanimages), dim=c(144, 26)) 
dim(mi) 
plot(mi) 
si=array(unlist(sdimages), dim=c(144, 26)) 
dim(si) 
plot(si) 

ti=array(unlist(test_images), dim=c(144,26*2)) 
dim(ti) 

#that is the thirdtest image ("b")is supposed to return 2 
for(testt in 1:52){ 
    maxi=0 
    for(iter in 1:26) 
    { 
    p=1 
    for (pixel in 1:144){ 
     #change variable testt to test the classification 
     if (dnorm(ti[pixel,testt],mi[pixel,iter],si[pixel,iter]) <0.0001){ 
     p=p*.00001 
     } 
     else if(dnorm(ti[pixel,testt],mi[pixel,iter],si[pixel,iter]) <1) { 
     p=p*dnorm(ti[pixel,testt],mi[pixel,iter],si[pixel,iter]) 
     } 
    } 
    if (p>maxi){ 
     maxi=p 
     ind=iter 
    } 

    } 
    if (letters[ind]==letters[ddd]){ 
    tr=tr+1 
    } 
    print (letters[ind]) 
    print (letters[ddd]) 
    if (testt%%2==0){ 
    ddd=ddd+1 

    } 
} 


accuracy = ((tr-1)/52) 
accuracy 
+4

Hallo Muhammed in ggplot2 mit qplot aufgetragen, ich Ihnen definitiv helfen kann, um das zu tun, wäre es einfacher mit einem reproduzierbaren Beispiel.Ich vermute, dass Sie entweder einen Datenrahmen oder einen Vektor mit Ihren vorhergesagten Ergebnissen haben (Das ist was Sie grafisch darstellen möchten?). Wenn das der Fall ist, benutzen Sie diesen Code ' Daten <-put (Ihre_Ergebnisse) 'und ich kann Ihnen in kürzester Zeit helfen –

+0

Ich habe es versucht, aber es ergibt sich in Zahlen nein Graphen –

+0

Ja @MuhammedEltabakh, kopieren Sie das Ergebnis von 'dput (your_results)' und bearbeiten Sie Ihre Frage, so dass wir das Format Ihrer Daten sehen können, auf diese Weise wird es einfacher sein, Ihre Frage zu beantworten. Überprüfen Sie [diesen Link] (https://www.r-bloggers.com/converting-an-r-object-to-text-with-dput/), um dput zu verstehen –

Antwort

1

habe ich einen Vektor test_letters < - c (test_letters, Briefe [ind]

Und ich es (test_letters)