Sto usando sklearn su Python per fare un po 'di clustering. Ho addestrato 200.000 dati e il codice sotto funziona bene.Mantieni il risultato TFIDF per la previsione di nuovi contenuti utilizzando Scikit per Python
corpus = open("token_from_xml.txt")
vectorizer = CountVectorizer(decode_error="replace")
transformer = TfidfTransformer()
tfidf = transformer.fit_transform(vectorizer.fit_transform(corpus))
km = KMeans(30)
kmresult = km.fit(tfidf).predict(tfidf)
Ma quando ho nuovi contenuti di test, mi piacerebbe a raggrupparsi a grappoli esistito avevo addestrato. Quindi mi chiedo come salvare il risultato IDF , in modo da poter eseguire TFIDF per il nuovo contenuto di test e accertarmi che il risultato per il nuovo contenuto di test abbia la stessa lunghezza dell'array.
Grazie in anticipo.
UPDATE
posso avere bisogno di salvare "trasformatore" o variabile "TFIDF" su file (txt o altri), se uno di essi contiene il risultato IDF addestrato.
UPDATE
per esempio. Ho i dati di allenamento:
["a", "b", "c"]
["a", "b", "d"]
E faccio TFIDF, la volontà risultato comprende 4 funzioni (a, b, c, d)
Quando ho TEST:
["a", "c", "d"]
a vedere quale cluster (già creato da k-means) a cui appartiene. TFIDF fornirà il risultato solo con 3 feature (a, c, d), quindi il clustering in k-means cadrà. (Se provo lo ["a", "b", "e"]
, potrebbero esserci altri problemi.)
Quindi, come memorizzare l'elenco delle caratteristiche per i dati di test (ancora di più, memorizzarlo nel file)?
UPDATE
risolto, vedere le risposte di seguito.
di nuovi contenuti, cosa intendi? nuovi contenuti di test o contenuti di formazione? – user123
nuovo contenuto di test @ user123 –
Immagino che potresti non essere in grado di aggiungere nuovi contenuti di formazione a contenuti precedentemente preparati. Devi allenarti almeno una volta con tutti i dati di allenamento, quindi puoi raccogliere quei dati addestrati, che possono essere utilizzati in seguito per eliminare il ritardo dell'allenamento. Ma quando ricevi nuovi contenuti, dovresti addestrarlo almeno una volta – user123