推奨システム---surpriseライブラリのテスト
5542 ワード
1:データセットのロード
主に使用されるクラスは、Reader---スコアを含むファイルreaderクラスの解析です.
Dataset---いくつかのデータセット操作を含み、主な方法はload_である.builtion('データセット名')#組み込みデータセットのロード
load_from_df()#pandas構造データのロード
load_from_file()ユーザー独自のデータをロード
load_from_folds()#複数のデータをロードします.たとえば、
2:アルゴリズム選択、surpriseライブラリは協同フィルタリングに基づくアルゴリズムとマトリクス分解に基づくアルゴリズムの2大クラスを含む.
Algorithm predicting a random rating based on the distribution of the training set, which is assumed to be normal.
Algorithm predicting the baseline estimate for given user and item.
A basic collaborative filtering algorithm.
A basic collaborative filtering algorithm, taking into account the mean ratings of each user.
A basic collaborative filtering algorithm, taking into account the z-score normalization of each user.
A basic collaborative filtering algorithm taking into account a baseline rating.
The famous SVD algorithm, as popularized by Simon Funk during the Netflix Prize.
The SVD++ algorithm, an extension of
A collaborative filtering algorithm based on Non-negative Matrix Factorization.
A simple yet accurate collaborative filtering algorithm.
A collaborative filtering algorithm based on co-clustering.
3:モデルトレーニング
次に、サンプルコード(推奨リストを例に、不完全)を示します.は主に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.
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
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、主に
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.