我想獲取MovieLens標記數據集的tf-idf表示形式。該標籤是一個'COO - 格式:用於coo格式的ML數據集的TFIDF表示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
...
我的TF-IDF代碼的第一個版本是這樣的:
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
...
雖然這看起來不錯,但沒有確切的表示,我想。有兩個主要問題:
- 我認爲'標記'矩陣中的每一行被視爲一個不正確的文檔。許多電影都由不同的用戶添加爲單獨的條目。
- 'X'中的ID是矩陣索引。我怎樣才能知道相應的ML-ID?假設我想知道MLid:150的電影的tf-idf表示。我怎麼知道這個?
這將是很好,如果你可以讓我知道如何解決上述情況,我認爲這是一件非常容易的事情。
你會定義爲一個文件?所有標籤由電影連接起來? –
每部電影都是一個文檔。在這種情況下,在標籤矩陣中,每個文檔都有一個唯一的movieId。所以,給定電影的所有標籤的串聯定義該文檔(電影)。 – FlytoScience