Ich habe ein Szenario, wo ich ein Dataframe und Vokabeldatei, die ich versuche, um die Datenrahmen String-Spalten passen. Ich benutze scikit learn countVectorizer, das eine spärliche Matrix erzeugt. Ich muss die Ausgabe der Sparse-Matrix nehmen und sie mit dem Datenrahmen für die entsprechende Zeile im Datenrahmen zusammenführen.Iterate über Sparse-Matrix und Verkettung von Daten und Indizes für jede Zeile
Code: -
from sklearn.feature_extraction.text import CountVectorizer
docs = ["You can catch more flies with honey than you can with vinegar.",
"You can lead a horse to water, but you can't make him drink.",
"search not cleaning up on hard delete",
"updating firmware version failed",
"increase not service topology s memory",
"Nothing Matching Here"
]
vocabulary = ["catch more","lead a horse", "increase service", "updating" , "search", "vinegar", "drink", "failed", "not"]
vectorizer = CountVectorizer(analyzer=u'word', vocabulary=vocabulary,lowercase=True,ngram_range=(0,19))
SpraseMatrix = vectorizer.fit_transform(docs)
Below is sparse matrix output -
(0, 0) 1
(0, 5) 1
(1, 6) 1
(2, 4) 1
(2, 8) 1
(3, 3) 1
(3, 7) 1
(4, 8) 1
Nun, was ich bin auf der Suche zu tun, ist eine Zeichenfolge für jede Zeile von Sparse Matrix aufzubauen und es zu dem entsprechenden Dokument hinzuzufügen.
Bsp .: - für doc 3 ("Aktualisieren der Firmware-Version fehlgeschlagen"), ich suche "3: 1 7: 1" von Sparse-Matrix (dh Aktualisierung & fehlgeschlagen Spalte Index und ihre Häufigkeit) und fügen Sie dies zu docs Datenframe Zeile 3.
Ich habe versucht, unten, und es produziert flache Ausgabe wo ich bin, um die Submatrix basierend auf dem Zeilenindex zu erhalten, Schleife durch sie und erstellen Sie eine Zeichenfolge für jede Zeile wie "3: 1 7: 1 ", und schließlich fügen Sie diese Zeichenfolge als neue Spalte zum Datenrahmen für jede entsprechende Zeile hinzu.
cx = SpraseMatrix .tocoo()
for i,j,v in zip(cx.row, cx.col, cx.data):
print((i,j,v))
(0, 0, 1)
(0, 5, 1)
(1, 6, 1)
(2, 4, 1)
(2, 8, 1)
(3, 3, 1)
(3, 7, 1)
(4, 8, 1)
Genau das habe ich gesucht. Wenn möglich, möchten Sie auch den .indptr-Ansatz auschecken. Danke vielmals ! –