推奨システム---surpriseライブラリのテスト

5542 ワード

1:データセットのロード
def load_format2trainset():
    file_path = "F:\\ML\\recommendation_data\\music_playlist_farmat.txt"
    #  
    reader = Reader(line_format='user item rating timestamp', sep=',')
    #  
    music_data = Dataset.load_from_file(file_path, reader=reader)
    print(" ...")
    retrainset = music_data.build_full_trainset()
    return retrainset

主に使用されるクラスは、Reader---スコアを含むファイルreaderクラスの解析です.
Dataset---いくつかのデータセット操作を含み、主な方法はload_である.builtion('データセット名')#組み込みデータセットのロード
                                                                                              load_from_df()#pandas構造データのロード
                                                                                              load_from_file()ユーザー独自のデータをロード
                                                                                              load_from_folds()#複数のデータをロードします.たとえば、
# folds_files is a list of tuples containing file paths:
# [(u1.base, u1.test), (u2.base, u2.test), ... (u5.base, u5.test)]
train_file = files_dir + 'u%d.base'
test_file = files_dir + 'u%d.test'
folds_files = [(train_file % i, test_file % i) for i in (1, 2, 3, 4, 5)]

data = Dataset.load_from_folds(folds_files, reader=reader)
のデータセットに対するアクションは、次のとおりです.
build_full_trainset()   # , 
split(n_folds=5, shuffle=True)  # 

2:アルゴリズム選択、surpriseライブラリは協同フィルタリングに基づくアルゴリズムとマトリクス分解に基づくアルゴリズムの2大クラスを含む.random_pred.NormalPredictor
Algorithm predicting a random rating based on the distribution of the training set, which is assumed to be normal. baseline_only.BaselineOnly
Algorithm predicting the baseline estimate for given user and item. knns.KNNBasic
A basic collaborative filtering algorithm. knns.KNNWithMeans
A basic collaborative filtering algorithm, taking into account the mean ratings of each user. knns.KNNWithZScore
A basic collaborative filtering algorithm, taking into account the z-score normalization of each user. knns.KNNBaseline
A basic collaborative filtering algorithm taking into account a baseline rating. matrix_factorization.SVD
The famous SVD algorithm, as popularized by Simon Funk during the Netflix Prize. matrix_factorization.SVDpp
The SVD++ algorithm, an extension of  SVD  taking into account implicit ratings. matrix_factorization.NMF
A collaborative filtering algorithm based on Non-negative Matrix Factorization. slope_one.SlopeOne
A simple yet accurate collaborative filtering algorithm. co_clustering.CoClustering
A collaborative filtering algorithm based on co-clustering.
3:モデルトレーニング
次に、サンプルコード(推奨リストを例に、不完全)を示します.
    algo = KNNBaseline()
    algo.fit(trainset)    # 
    current_playlist = list(name_id_dic.keys())[listid] #name_id_dic id 
    playlist_id = name_id_dic[current_playlist]
    #  user id => to_inner_uid
    playlist_inner_id = algo.trainset.to_inner_uid(playlist_id)  # raw_i inner_id
    playlist_neighbors = algo.get_neighbors(playlist_inner_id, k=10)  # , inner_id
  • は主にTrainsetクラスと中の方法を用いており、trainsetを参照することができ、その主な方法と属性は:
  • を含む.
     to_inner_uid(ruid) :Convert     a user raw id      to       an inner id.
     to_inner_iid(riid)            :Convert      an item raw id     to      an inner id.
     to_raw_iid(iiid)              :Convert       an item inner id   to       a raw id.
     to_raw_uid(iuid)             :Convert        a user inner id     to       a raw id.
     all_items():反復可能なitemsのinner_を返します.idリスト
     all_users()                         :  Generator function to iterate over all users. usersのinner_を返しますidリスト
     all_ratings():戻り:A tuple(uid,iid,rating)idは内部id
     build_testset():テストデータlistの生成
    ur------ユーザスコア、辞書を返し、valueは:(item_inner_id,rating).key値はuserのinner_id
    IR------物品採点辞書を返します.The keys are item inner ids.
    n_users/ n_items/n_ratings:データセットに含まれるユーザー、アイテム、スコア数
    rating_scale:スコア範囲
    global_mean:スコア平均
    アルゴリズムベースクラス:The algorithm base class、主に
  • fit(trainset):所与のデータセットトレーニングアルゴリズムReturn:self
  • による
  • get_neighbors(iid,k):パラメータ:iid--user or itemのinner_id k:隣人数Return:K最近の隣人のinner_id
  • predict(uid,iid,r_ui=None,clip=True,verbose=False):与えられたueserまたはitemのスコアを予測し、アルゴリズムはraw_を変換するid==》inner_idは、予測関数を実行し、予測に失敗した場合、例えばuserとitemが知らない場合、グローバルスコア平均
  • を返す.
    Parameters: uid – (Raw) id of the user. See this note.iid – (Raw) id of the item. See this note.r_ui (float) – The true rating ruirui. Optional, default is None.clip (bool) – Whether to clip the estimation into the rating scale. For example, if r^uir^ui is 5.55.5 while the rating scale is [1,5][1,5], then r^uir^ui is set to 55. Same goes if r^ui<1r^ui<1. Default is True.verbose (bool) – Whether to print details of the prediction. Default is False.Returns: A Prediction object containing:The user id uid.The item id iid.The true rating r_ui (r^uir^ui).The estimated rating (r^uir^ui).
    Some additional details about the prediction that might be useful for later analysis.