movielens數據集讀取、轉換

【1】從https://grouplens.org/datasets/movielens/上下載數據集,包含6000用戶,4000多電影的100萬條數據

【讀數據】

import pandas as pd
import numpy as np
users_Name=['user_id','gender','age','work','zip']
ratings_Name=['user_id','movies_id','ratings','timeStamp']
movie_Name=['movie_id','title','calss']
users=pd.read_table('ml-1m/users.dat',sep='::',header=None,names=users_Name)
ratings=pd.read_table('ml-1m/ratings.dat',sep='::',header=None,names=ratings_Name)
movies=pd.read_table('ml-1m/movies.dat',sep='::',header=None,names=movie_Name)
print('用戶表記錄數:',len(users),'評分表記錄數:',len(ratings),'電影表記錄數:',len(movies))
print('**********用戶表前五條記錄**********')
print(users.head(5))
print('**********評分表前五條記錄**********')
print(ratings.head(5))
print('********電影表前五條記錄************')
print(movies.head(5))

【只需要ratings數據,dataFrame轉換成字典,字典的值爲產品列表】

   #先轉成array

d1=np.array(ratings[['user_id','movies_id']])
#再轉成列表
listdata=d1.tolist()
data={}
for i in range(len(listdata)):
    #獲取列表中的第一個元素 用戶Id
    userid=listdata[i][0]
    movieid=listdata[i][1]
    #判斷用戶id是否存在
    if userid not in data.keys():
        #設置字典值爲列表,允許有重複
        # 如果沒重複,可以寫爲data.setdefault(userid,{})[movieid]=1
        # data.setdefault(userid,[]).append(movieid)
        data.setdefault(userid, []).append(movieid)
    else:
        data[userid].append(movieid)
# for user,movie in data.items():
#     print('用戶ID:',user,'       產品列表:',movie,'\n')
# with open('data.txt', 'wb') as f:
#    pickle.dump(data,f)
print('done')
【劃分訓練集和測試集】
兩種方法見:http://mp.csdn.net/postedit/79582513


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章