用MovieLens資料集做推薦(Python推薦系統二)
阿新 • • 發佈:2019-01-06
思路:下載MovieLens的資料集,對資料集進行函式定義,定義各資料列的名稱,根據上一篇Python寫出簡單的推薦系統(一) 文中的recommendations.py 的使用者相似度進行推薦。
下載MovieLens的地址:http://grouplens.org/datasets/movielens/(選擇ml-100k.zip), 下載後的路徑可以是和recommendations.py相同,也可是任意Python下面的其他地方,後面會針對兩種情況做相關說明。
將下列Python 程式碼新增到之前recommendations.py 裡面:
def loadMovieLensTrain(filename='u1.base'): str1 ='./ml-100k/' #載入資料 prefs={} for line in open(str1+filename,'r'): (user,movieid,rating,ts)=line.split('\t') prefs.setdefault(user,{}) prefs[user][movieid]=float(rating) return prefs def loadMovieLensTest(filename='u1.test'): str1 ='./ml-100k/' #載入資料 prefs={} for line in open(str1+filename,'r'): (user,movieid,rating,ts)=line.split('\t') prefs.setdefault(user,{}) prefs[user][movieid]=float(rating) return prefs if __name__=="__main__": print ("""這個部分可以進行上面2個函式測試""") trainDict= loadMovieLensTrain() testDict = loadMovieLensTest() print (len(trainDict)) print (len(testDict)) print ("""測試通過""")
這裡的str1=’./ml-100k/’ 表明的是相對路徑,此時的ml-100資料夾必須是和recommendations.py 檔案一個路徑。如果不在一個路徑,因為執行的最終是recommendations.py檔案,所以用的是ml-100k 全路徑名,例如:
str1:’E:/Python/ml-100k’
先執行進行了更新的recommendations.py 檔案,得到測試的結果:
>>>
這個部分可以進行上面2個函式測試
943
459
測試通過
表明函式式正確的,如果出現提示說’u1.base’ 或’u1.test’的格式不能讀取,則可用Notepad++ 修改格式。(具體見檢視loadMovieLensTrain裡的列表
>>> import recommendations
>>> prefs =recommendations.loadMovieLensTrain()
>>> prefs['1']
返回所有對應的評分資料列表
對id號為1的使用者推薦三個物品:
>>>recommendations.getRecommendations(prefs,'1')[0:3]
[(5.000000000000001, '1293'), (5.0,'1653'), (5.0, '1599')]