Ich arbeite an einem Sentiment-Analyse-Projekt. Ich benutze einen Beutel mit Wörtern auf Sklearn. Ich möchte die Zeilen nomalize wie in:Anwenden von benutzerdefinierten Funktionen auf Sparse-Matrix in Sklearn
a = [1, 0, 1, 0, 0, 0, 0, 1, 0, 1]
#a -> 4 non zero values
der normierte Vektor sein sollte:
[0.25, 0.0, 0.25, 0.0, 0.0, 0.0, 0.0, 0.25, 0.0, 0.25]
Für b -> 8 nicht Nullen Werte:
b = [1, 0, 1, 1, 0, 1, 1, 1, 1, 1]
der normierte Vektor sein sollte :
[0.125, 0.0, 0.125, 0.125, 0.0, 0.125, 0.125, 0.125, 0.125, 0.125]
class 'scipy.sparse.csr.csr_matrix
(0, 2111) 1
(0, 2812) 1
(0, 2848) 1
......
......
(0, 5745) 1
(0, 5823) 1
Wie kann gelten o Zu einer solchen Matrix?
Ich weiß, dass ich dies in eine reguläre Matrix mit der ".toarray" -Methode konvertieren kann, aber dies ein Speicherproblem, die Matrix ist mehrere Gb.
Dies ist keine Lösung, sondern nur ein Vorschlag zur Überwindung des Speicherproblems. Da es sich um eine dünn besetzte Matrix handelt, können Sie die Matrix im Matrix Market-Format speichern. Dann können Sie jeden Wert der Matrix auf eine sehr einfache Weise normalisieren, wie Sie es für einen Vektor tun. –
Haben Sie sich die Methoden einer CSR-Matrix angeschaut? Es gibt eine Summe, wahrscheinlich eine Gemeinheit. Machen Sie kleine Arrays spärlich und experimentieren Sie. – hpaulj
Ich sollte hinzufügen, dass das "sklearn" auch einige benutzerdefinierte spärliche Funktionen hat - um häufige Aufgaben in diesem Paket zu beschleunigen. Ich habe ihren Code für andere Fragen angeschaut, aber nicht darauf geachtet, wo oder wie sie dokumentiert sind. – hpaulj