7

Ho un grande corpus di opinioni (2500) in testo non elaborato. Vorrei usare la libreria di scikit-learn per dividerli in set di test/treno. Quale potrebbe essere l'apice migliore per risolvere questo compito con scikit-learn ?. Qualcuno potrebbe fornirmi un esempio di suddivisione del testo grezzo in set di test/treno (probabilmente userò la rappresentazione di tf-idf).Come suddividere i dati (testo non elaborato) in set di test/treno con il modulo di crossvalidation scikit?

risposta

19

Supponiamo che il vostro dati è una lista di stringhe, cioè

data = ["....", "...", ] 

Poi si può dividere in formazione (80%) e di prova (20%) delle formazioni con train_test_split esempio facendo:

from sklearn.cross_validation import train_test_split 
train, test = train_test_split(data, train_size = 0.8) 

Prima di correre a farlo, però, leggere those docs attraverso. 2500 non è un "corpus grande" e probabilmente vuoi fare qualcosa come una cross-validation k-fold piuttosto che una singola divisione holdout.

+0

Mi piacerebbe fare qualche analisi del sentimento in spagnolo. È un corretto approccio per dividere il set di dati? Ho una directory con 2500 file .txt (opinioni). – anon

+4

Come ho detto, 2500 non è un numero elevato, quindi è meglio fare una verifica incrociata per valutare le prestazioni. Inoltre, potrebbe essere necessario prima dividere un "set di test finale" (ad esempio, 500 articoli), utilizzare il 2000 per la selezione del modello (utilizzando la convalida incrociata per selezionare il modello migliore) e una volta impostato su un modello, controllarne le prestazioni sul set di test originariamente trattenuto. Potrebbero esserci delle variazioni al tuo approccio, a seconda di un numero di fattori. –