# Quick Start
# input : 사용자ID, 아이템ID
# Output : 평점
import pandas as pd
from surprise import Dataset
from surprise import Reader
from surprise import KNNBasic
from surprise.model_selection import train_test_split
data = Dataset.load_builtin('ml-100k')
df = pd.DataFrame(data.__dict__['raw_ratings'], columns = ['user_id', 'item_id', 'rating', 'timestamp'])
df.drop(['timestamp'], axis = 1, inplace = True)
reader = Reader(rating_scale = (1, 5))
data = Dataset.load_from_df(df, reader)
train_set, test_set = train_test_split(data, test_size = 0.25, random_state = 1004)
algo = KNNBasic(k = 20, min_k = 1, sim_options = {'name': 'msd', 'user_based': True})
algo.fit(train_set)
user_id = str(244)
item_id = str(51)
pred = algo.predict(user_id, item_id)
pred = algo.predict(user_id, item_id)
real = df[(df['user_id'] == user_id) & (df['item_id'] == item_id)]
avg_rating = df[df['item_id'] == item_id]['rating'].mean()
print(f'예측 평점: {pred.est}')
print(f'실제 평점: {real.rating.iloc[0]}')
print(f'평점 평균: {avg_rating}')
'Programming Language > Python' 카테고리의 다른 글
[Python] FastAPI 데이터 타입 강제하는 방법 (0) | 2023.03.10 |
---|---|
[Python] FastAPI Return 테스트 해보기 (0) | 2023.03.10 |
[Python] Surprise 라이브러리로 예측평점과 실제평점 비교해보기 (0) | 2023.02.27 |
[Python] Surprise 라이브러리로 사용자의 아이템 예측해보기 (0) | 2023.02.27 |
[Python] Surprise 라이브러리로 RMSE 출력하는 방법 (0) | 2023.02.27 |