Here是蟹教程的相關部分加載datset。
在上面的例子中,您只使用模型的movies.data字段。 movies.data看起來如下:
>>> print movies.data
{1: {1: 3.0, 2: 4.0, 3: 3.5, 4: 5.0, 5: 3.0},
2: {1: 3.0, 2: 4.0, 3: 2.0, 4: 3.0, 5: 3.0, 6: 2.0},
3: {2: 3.5, 3: 2.5, 4: 4.0, 5: 4.5, 6: 3.0},
4: {1: 2.5, 2: 3.5, 3: 2.5, 4: 3.5, 5: 3.0, 6: 3.0},
5: {2: 4.5, 3: 1.0, 4: 4.0},
6: {1: 3.0, 2: 3.5, 3: 3.5, 4: 5.0, 5: 3.0, 6: 1.5},
7: {1: 2.5, 2: 3.0, 4: 3.5, 5: 4.0}}
這僅僅是一個字典,其中鍵是用戶和值是另一個(在此由1,2,3,4,5,6,和7表示)字典,其中關鍵是電影ID,值是評級。所以你只需要構造一個嵌套字典。
從源頭上,作者從加載.csv文件導入數據用下面的代碼:
def load_sample_movies():
base_dir = join(dirname(__file__), 'data/')
#Read data
data_m = np.loadtxt(base_dir + 'sample_movies.csv',
delimiter=';', dtype=str)
item_ids = []
user_ids = []
data_songs = {}
for user_id, item_id, rating in data_m:
if user_id not in user_ids:
user_ids.append(user_id)
if item_id not in item_ids:
item_ids.append(item_id)
u_ix = user_ids.index(user_id) + 1
i_ix = item_ids.index(item_id) + 1
data_songs.setdefault(u_ix, {})
data_songs[u_ix][i_ix] = float(rating)
data_t = []
for no, item_id in enumerate(item_ids):
data_t.append((no + 1, item_id))
data_titles = dict(data_t)
data_u = []
for no, user_id in enumerate(user_ids):
data_u.append((no + 1, user_id))
data_users = dict(data_u)
fdescr = open(dirname(__file__) + '/descr/sample_movies.rst')
return Bunch(data=data_songs, item_ids=data_titles,
user_ids=data_users, DESCR=fdescr.read())
而且.csv文件,該數據位於在形式:
Jack Matthews;Lady in the Water;3.0
Jack Matthews;Snakes on a Planet;4.0
Jack Matthews;You, Me and Dupree;3.5
Jack Matthews;Superman Returns;5.0
Jack Matthews;The Night Listener;3.0
Mick LaSalle;Lady in the Water;3.0
Mick LaSalle;Snakes on a Planet;4.0
Mick LaSalle;Just My Luck;2.0
Mick LaSalle;Superman Returns;3.0
Mick LaSalle;You, Me and Dupree;2.0
Mick LaSalle;The Night Listener;3.0
因此,如果你想製作自己的數據集,你有兩個選擇。可以將它自己格式化爲推薦程序需要的字典格式,也可以根據導入的格式編寫一個方法,以便爲您進行格式化。
似乎並不像項目有一個通用的「從csv導入」的方法,我可以找到 - 我可能會錯過它,只能瀏覽它。
幸運的是,由於推薦人只需要字典,因此不需要額外的描述文件,只需正確格式化數據就足夠了。
謝謝你馬特。你能告訴我什麼是sample_movies.rst是什麼?我試圖通過一些修改來運行此代碼,因爲它在修改之前無法編譯。但是,當我運行代碼時,它找不到sample_movies.rst文件。 – HimanAB
這是一個元數據文件。 它只是列出了數據集由託比·西格倫 注 ----- 該數據集包括 稱爲編程集體智慧的書收集* n,其中(1-5)的n個用戶評分到n部電影。 – Matt