直接pip安裝:
pip install scikit-surprise
1、使用小例子(『print_perf』 ,evaluate都不能使,查原**換成predictionimpossible)
from surprise import dataset,prediction_algorithms
from surprise.model_selection import cross_validate
data = dataset.load_builtin('ml-100k')
### 使用normalpredictor
from surprise import knnbasic
from surprise import predictionimpossible
algo = knnbasic()
perf = cross_validate(algo, data, measures=['rmse', 'mae'])
predictionimpossible(perf)
輸出:urprise.prediction_algorithms.predictions.predictionimpossible()
2、推薦電影top10案例(維護兩個字典,index,電影,另乙個電影,index 相反)
import os
from surprise import knnbaseline
import io
from surprise import dataset
# step 1 : train model
def trainmodel():
data = dataset.load_builtin('ml-100k')
trainset = data.build_full_trainset()
# use pearson_baseline to compute similarity
sim_options =
algo = knnbaseline(sim_options=sim_options)
# train
algo.fit(trainset)
return algo
# step 2 : get id_name and name_id
def get_dict():
file_name = os.path.expanduser(r'c:\users\lonng\.surprise_data\ml-100k\ml-100k\u.item')
id_name = {}
name_id = {}
with open(file_name, 'r', encoding='iso-8859-1') as f:
for line in f:
line = line.split('|')
id_name[line[0]] = line[1]
name_id[line[1]] = line[0]
# print(id_name,name_id)
return id_name, name_id
# step 3 : recommend movies based on the model
def recommendmovie(moviename, algo, id_name, name_id, recommendnum):
# get movie's raw id
raw_id = name_id[moviename]
print("%%%%%%%%%%%",raw_id)
# translate raw_id to inner_id
inner_id = algo.trainset.to_inner_iid(raw_id)
print("%%%%%%%%%%%",inner_id)
print("%%%%%%%%%%%",algo.trainset.to_raw_iid(inner_id))
# recommend movies
recommendations = algo.get_neighbors(inner_id, recommendnum)
print("%%%%%%%%%%%",recommendations)
# translate inner_id to raw_id
raw_ids = [algo.trainset.to_raw_iid(inner_id) for inner_id in recommendations]
print("%%%%%%%%%%%",raw_ids)
# get movie name
movies = [id_name[raw_id] for raw_id in raw_ids]
for movie in movies:
print(movie)
if __name__ == '__main__':
id_name, name_id = get_dict()
algo = trainmodel()
showmovies = recommendmovie('craft, the (1996)', algo, id_name, name_id, 10)
3、讀取自己檔案格式
import os
from surprise import reader, dataset
# 指定檔案路徑
file_path = os.path.expanduser('./popular_music_suprise_format.txt')
# 指定檔案格式
reader = reader(line_format='user item rating timestamp', sep=',')
# 從檔案讀取資料
music_data = dataset.load_from_file(file_path, reader=reader)
# 分成5折
music_data.split(n_folds=5)
推薦系統演算法簡單總結
1 協同過濾和基於內容推薦有什麼區別?使用者u1喜歡的電影是a,b,c 使用者u2喜歡的電影是a,c,e,f 使用者u3喜歡的電影是b,d 協同過濾的辦法 那麼你完全可以忽略item的建模,因為這種辦法的決策是依賴user和item之間的關係,也就是這裡的使用者和電影之間的關係。我們不再需要知道ab...
推薦系統架構 推薦系統(1) 業界推薦系統架構
1.1業界主流推薦系統架構 業界推薦系統通用架構 1.2使用者本身資料 1.3物品本身資料 1.4使用者行為資料 2.1基於離線訓練的推薦系統架構設計 常用演算法 邏輯回歸 logistics regression 梯度提公升決策樹 gbdt 和因式分解 fm 架構設計 2.2面向深度學習的推薦系統...
推薦系統(1) 推薦系統概述
推薦系統是主動從大量資訊中找到使用者可能感興趣的資訊的工具。推薦系統的核心問題是如何實現推薦個性化 如何向使用者推薦匹配度高的產品 商品 或專案,本質是通過一定的方式將使用者和專案聯絡起來。自從xerox palo alto研究中心於1992年研發出了基於協同過濾的實驗系統tapestry以來 主要...