Ich möchte die tf-idf Darstellung für MovieLens-Tag-Dataset erhalten. Die Tags sind in einem 'coo' Format:TFIDF-Darstellung für ML-Datensatz im Coo-Format Python
import pandas as pd
ratings = pd.read_csv('data/ratings.csv',sep=',')
movies = pd.read_csv('data/movies.csv',sep=',')
tags = pd.read_csv('data/tags.csv',sep=',')
print(tags)
userId movieId tag \
0 15 339 sandra 'boring' bullock
1 15 1955 dentist
2 15 7478 Cambodia
3 15 32892 Russian
4 15 34162 forgettable
5 15 35957 short
6 15 37729 dull story
7 15 45950 powerpoint
8 15 100365 activist
9 15 100365 documentary
10 15 100365 uganda
11 23 150 Ron Howard
...
Die erste Version meines tf-idf-Code sieht wie folgt aus:
vectorizer = TfidfVectorizer(use_idf=True, norm= 'l2')
X = vectorizer.fit_transform(tags['tag'])
print(X)
(0, 89) 0.603928505945
(0, 80) 0.52013528953
(0, 577) 0.603928505945
(1, 160) 1.0
(2, 94) 1.0
(3, 573) 1.0
(4, 255) 1.0
(5, 604) 1.0
...
Während diese schön aussieht, ist es nicht die genaue Darstellung, die ich wollen. Es gibt zwei Hauptprobleme:
- Ich denke, jede Zeile in der 'Tag' Matrix wird als ein Dokument behandelt, das nicht wahr ist. Viele Filme werden von verschiedenen Benutzern als separate Einträge markiert.
- Die IDs in 'X' sind Matrixindizes. Wie kann ich die entsprechenden ML-IDs kennen? Angenommen, ich möchte die tf-idf-Darstellung für einen Film mit MLid wissen: 150. Wie kann ich das wissen?
Es wäre schön, wenn Sie mir mitteilen könnten, wie ich die oben genannten Fälle beheben kann, was ich für eine ziemlich einfache Aufgabe halte.
was würden Sie als Dokument definieren? Die Verkettung aller Tags durch Filme? –
Jeder Film ist ein Dokument. In diesem Fall hat jedes Dokument in der Tag-Matrix eine eindeutige movieId. Also, ja Verkettung aller Tags für einen bestimmten Film definieren dieses Dokument (Film). – FlytoScience