2013-08-20 19 views
7

Sto provando a creare un classificatore utilizzando SVM light che classifica un documento in una delle due classi. Ho già addestrato e testato il classificatore e un file modello è stato salvato sul disco. Ora voglio usare questo file modello per classificare documenti completamente nuovi. Quale dovrebbe essere il formato del file di input per questo? Potrebbe essere un semplice file di testo (non penso che funzionerebbe) o potrebbe essere semplicemente un elenco di funzionalità presenti nel file di testo senza alcuna etichetta di classe e pesi di caratteristiche (in tal caso devo tenere traccia degli indici di caratteristiche nel vettore delle caratteristiche durante l'allenamento) o è un altro formato?Formato file per la classificazione utilizzando la luce SVM

risposta

6

file di test di formazione e devono essere dello stesso formato, ogni risultato di istanza in una linea della forma seguente:

<line> .=. <target> <feature>:<value> ... <feature>:<value> # <info> 
<target> .=. +1 | -1 | 0 | <float> 
<feature> .=. <integer> | "qid" 
<value> .=. <float> 
<info> .=. <string> 

Per esempio (copia di pasta da SVM^sito luce):

-1 1:0.43 3:0.12 9284:0.2 # abcdef 

Per ulteriori informazioni, consultare lo SVM^light website.

+0

Marc Non sto provando a "testare" il classificatore qui. Voglio usarlo ora per lo scopo pratico di classificare documenti completamente sconosciuti. In un file "test" conosco la classe a cui appartiene il documento e quindi posso preparare il file di conseguenza. Quando sto cercando di fare una classificazione "reale", non conosco la classe del documento e i valori delle caratteristiche (diciamo se sto usando i valori tf-idf nella fase di addestramento e test, allora non c'è valore idf se è un documento completamente sconosciuto). Allora, quale sarebbe il formato del file? – ritesh

+0

@ritesh L'uso di un classificatore viene generalmente chiamato * fase di test *, anche se non si è interessati a valutarne l'accuratezza. Puoi omettere la prima colonna (non sono sicuro che SVM^light permetta questo, so che libsvm lo fa), o usare un valore di tua scelta (sicuramente funziona). Le etichette vengono utilizzate solo per segnalare una precisione. Quindi, se non li hai, usa il tuo numero preferito, ma tieni presente che qualsiasi accuratezza riportata è completamente falsa. –

+0

Devo ammettere che ora sono molto confuso. Diciamo che ho inserito qualsiasi numero nella prima colonna (invece di un'etichetta di classe). Ma allora come faccio a calcolare i valori delle caratteristiche [il formato è ': .... : ']? Per la formazione, sto utilizzando tf-idf e frequenza di classe per calcolare questo valore che tiene conto del numero totale di documenti di formazione e del numero totale di documenti di formazione nella classe a cui appartiene questo documento. Per i test potrebbe essere un valore calcolato in modo diverso da quello utilizzato in allenamento? Se sì, quale potrebbe essere questo valore? – ritesh

0

Il formato del file di fare previsioni è la stessa di quella di fare di prova e dei treni, vale a dire

<line> .=. <target> <feature>:<value> ... <feature>:<value> # <info> 
<target> .=. +1 | -1 | 0 | <float> 
<feature> .=. <integer> | "qid" 
<value> .=. <float> 
<info> .=. <string> 

Ma per rendere la previsione di destinazione è sconosciuta, quindi è necessario utilizzare 0 valore come bersaglio. Thi è l'unica differenza. Spero che questo aiuti qualcuno

Problemi correlati