7

Sto cercando di classificare i documenti di testo in numero di categorie. mio codice qui sotto funziona beneCreate_Analytics in RTextTools

matrix[[i]] <- create_matrix(trainingdata[[i]][,1], language="english",removeNumbers=FALSE,stemWords=FALSE,weighting=weightTf,minWordLength=3)        
container[[i]] <- create_container(matrix[[i]],trainingdata[[i]][,2],trainSize=1:50,testSize=51:100) , 
models[[i]] <- train_models(container[[i]], algorithms=c("MAXENT","SVM")) 
results[[i]] = classify_models(container[[i]],models[[i]]) 

Quando provo al codice sottostante per ottenere precisione, di richiamo, valori di precisione:

analytic[[i]] <- create_analytics(container[[i]], results[[i]]) 

ottengo il seguente errore:

Error in `row.names<-.data.frame`(`*tmp*`, value = c(NA_real_, NA_real_ : 
    duplicate 'row.names' are not allowed 

mio Categories sono nel formato text. Se converto quelli categories in Numeric - il codice sopra funziona correttamente.

Esiste un modo per aggirare le categorie nel formato text e ottenere Precisione, richiamo, valori di precisione.

Il mio obiettivo è ottenere precisione, richiamo, valori di precisione e matrice di confusione per il classificatore multi-classe. Esiste un altro pacchetto per ottenere i valori sopra indicati per il classificatore Testo a più classi (uno contro tutti)

+0

si può provare se 'fattore (Categorie)' funziona per voi – OdeToMyFiddle

+0

No non ha funzionato – RUser

+0

C'è qualche lavoro in giro, a fai questo – RUser

risposta

7

Come utente3294343 ha commentato, ha funzionato per me convertendo il mio campo di classe in un fattore, e quindi in numerico, come segue :

doc_matrix <- create_matrix(dataset.arff$text, language="english", removeNumbers=TRUE, stemWords=TRUE, removeSparseTerms=.998) 
container <- create_container(doc_matrix, as.numeric(factor(dataset.arff$"@@[email protected]@")), trainSize=1:1500, testSize=1501:1999, virgin=FALSE) 

Questo ha risolto l'errore per me.

1

Sopra trucco accennato lavorato per me, convertire in fattori

matrix <- create_matrix(combinedDF["error"], language="english", 
        removeNumbers=TRUE, stemWords=FALSE, weighting=tm::weightTfIdf) 
len <- dim(combinedDF)[1] 
container <- create_container(matrix,as.numeric(factor(combinedDF$class)),trainSize=1:len, testSize=1:len, 
          virgin=TRUE) 
maxent_model <- train_model(container,"MAXENT") 
maxent_results <- classify_model(container,maxent_model) 
analytics <- create_analytics(container, maxent_results, b=1) 
+0

puoi dire per favore qual è la differenza tra la tua risposta e la risposta di dsg? –