2013-04-10 3 views
5

Sto lavorando su un problema di classificazione del testo utilizzando classificatori di scikit-learn e text feature extractor, in particolare la classe TfidfVectorizer.Come estendere Scipy Sparse Matrix restituita da sklearn TfIdfVectorizer per contenere più funzionalità

Il problema è che ho due tipi di funzionalità, i primi sono catturati dai n-grammi ottenuti da TfidfVectorizer e l'altro sono funzionalità specifiche del dominio che estrao da ciascun documento. Ho bisogno di combinare entrambe le caratteristiche in un singolo vettore di funzionalità per ogni documento; per fare questo ho bisogno di aggiornare la matrice sparsa di scipy restituita da TfidfVectorizer aggiungendo una nuova dimensione in ogni riga che contiene la caratteristica di dominio per questo documento. Tuttavia, non riesco a trovare un modo accurato per farlo, per intenderci voglio dire non convertire la matrice sparsa in una densa poiché semplicemente non si adatterà alla memoria.

Probabilmente mi manca una funzionalità in scikit-learn o qualcosa del genere, dato che sono nuovo sia per scipy che per scikit.

risposta

5

Penso che il modo più semplice sarebbe creare una nuova matrice sparsa con le funzioni personalizzate e quindi utilizzare scipy.sparse.hstack per impilare le funzioni. È anche possibile trovare "FeatureUnion" dal modulo pipeline utile.

+0

Non ho trovato il "FeatureStacker", intendi il "FeatureUnion"? – iBrAaAa

+0

Scusa, questo è quello che intendevo. –

+0

FeatureUnion ha funzionato, grazie! – iBrAaAa