K-최근접 이웃 실습
예제 데이터 로딩
from surprise import Dataset
from surprise.model_selection import train_test_split
data = Dataset.load_builtin('ml-100k')
trainset, testset = train_test_split(data, test_size=.2, random_state=42)
알고리즘 설정
from surprise import KNNBasic, KNNWithMeans, KNNBaseline, KNNWithZScore
algo = KNNBasic(k=40, min_k=1, sim_options={'name': 'msd', 'user_based': True})
모든 알고리즘은 다음과 같은 공통 인자가 있다.
k: 이웃의 최대 개수 (기본값 40)min_k: 이웃의 최소 개수 (기본값 1) 유사도가 0보다 큰 이웃이 최소 개수에 미달할 경우에는 평점을 기본값으로 추정.sim_options: 유사도 계산 방법
sim_options는 사전(dict) 형태로 name과 user_based를 설정한다.
name의 종류는 다음과 같다.
msdcosinepearsonpearson_baseline
user_based가 True인 경우에는 사용자 간 유사성을 계산하고, False인 경우에는 상품 간 유사성을 계산한다.
알고리즘 학습
algo.fit(trainset)
Computing the msd similarity matrix... Done computing similarity matrix.
<surprise.prediction_algorithms.knns.KNNBasic at 0x1f5cf369940>
uid = str(196)
iid = str(302)
pred = algo.predict(uid, iid)
pred.est
3.902658210324525