Ich verwende sklearn auf Python, um etwas Clustering durchzuführen. Ich habe 200.000 Daten trainiert, und Code unten funktioniert gut.Behalte das TFIDF-Ergebnis für die Vorhersage neuer Inhalte mit Scikit für 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)
Aber wenn ich neue Testinhalte habe, möchte ich sie zu bestehenden Clustern gruppieren, die ich trainiert habe. Ich frage mich also, wie ich IDF-Ergebnis speichern kann, so dass ich TFIDF für den neuen Testinhalt tun kann und sicherstellen, dass das Ergebnis für neue Testinhalte dieselbe Arraylänge hat.
Vielen Dank im Voraus.
UPDATE
Ich brauche kann „Transformator“ oder „TFIDF“ Variable zu einer Datei speichern (txt oder andere), wenn einer von ihnen das gelernten IDF Ergebnis enthält.
UPDATE
Zum Beispiel. Ich habe die Trainingsdaten:
["a", "b", "c"]
["a", "b", "d"]
Und tun TFIDF, enthält das Ergebnis 4 Merkmale (a, b, c, d)
Wenn ich TEST:
["a", "c", "d"]
zu sehen Sie, welcher Cluster (bereits von k-means gemacht) gehört. TFIDF gibt nur das Ergebnis mit 3 Merkmalen (a, c, d), so dass das Clustering in k-means fällt. (Wenn ich ["a", "b", "e"]
teste, kann es andere Probleme geben.)
So, wie man die Merkmalsliste für das Prüfen von Daten speichert (sogar mehr, speichert es in der Akte)?
UPDATE
gelöst, siehe unten Antworten.
durch neuen Inhalt, was meinst du? neue Testinhalte oder Trainingsinhalte? – user123
neuer Testinhalt @ user123 –
Ich vermute, dass Sie möglicherweise nicht in der Lage sind, neue Trainingsinhalte an zuvor trainierte Inhalte anzuhängen. Sie müssen mindestens einmal mit ganzen Trainingsdaten trainieren, dann können Sie diese trainierten Daten putzen, die später verwendet werden können, um die Trainingsverzögerung zu eliminieren. Aber wenn du neue Inhalte bekommst, musst du es mindestens einmal trainieren – user123