2015-05-04 15 views

risposta

13

Hanno uno scopo simile. Il documentation fornisce alcune pro ei contro per la HashedVectorizer:

Questa strategia ha diversi vantaggi:

  • è molto poca memoria scalabile per grandi serie di dati in quanto non v'è alcuna necessità di memorizzare un dizionario vocabolario in memoria
  • è veloce da decapare e non sottaceto poiché non contiene nessuno stato oltre ai parametri del costruttore
  • può essere utilizzato in uno streaming (accoppiamento parziale) o una pipeline parallela in quanto non esiste stato calcolato durante l'adattamento.

ci sono anche un paio di svantaggi (vs utilizzando un CountVectorizer con un vocabolario in-memory):

  • non c'è modo di calcolare la trasformata inversa (da indici caratteristica per caratterizzare nomi di stringa), che può essere un problema quando si cerca di introspettare quali caratteristiche sono più importanti per un modello.
  • ci possono essere collisioni: token distinti possono essere mappati allo stesso indice di caratteristica. Tuttavia, in pratica, raramente si tratta di un problema se le caratteristiche di n_ sono sufficientemente grandi (ad esempio 2 ** 18 per i problemi di classificazione del testo ).
  • nessuna pesatura IDF in quanto ciò renderebbe lo stato del trasformatore.
Problemi correlati