پیاده سازی سیستم توصیه گر در پایتون به دستههای مختلفی تقسیم میشود، از جمله سیستمهای توصیهگر مبتنی بر محتوا و سیستم های مبتنی بر همکاری. در اینجا یک روند کلی برای پیادهسازی این سیستمها آورده شده است:
سرفصل های مقاله
۱. نصب کتابخانههای لازم
ابتدا باید کتابخانههای مورد نیاز را نصب کنید. معمولاً برای پیادهسازی سیستمهای توصیهگر از کتابخانههای زیر استفاده میشود:
pip install pandas numpy scikit-learn
۲. جمعآوری و پیش پردازش دادهها
برای ایجاد یک سیستم توصیهگر، به داده نیاز دارید. دادهها معمولاً شامل اطلاعات کاربر، کالاها و منبعهای اعتباری (نمرات) هستند. بهعنوان مثال، ممکن است دادههای شما شبیه زیر باشد:
import pandas as pd
data = {
'UserID': [1, 1, 2, 2, 3, 3],
'ItemID': [101, 102, 101, 103, 102, 104],
'Rating': [5, 4, 4, 5, 3, 4]
}
df = pd.DataFrame(data)
۳. پیادهسازی سیستم توصیه گر مبتنی بر محتوا
در این نوع سیستمها، ویژگیهای کالاها مورد استفاده قرار میگیرند. بهعنوان مثال، اگر شما به فیلمها توصیه میکنید، ممکن است از ژانرها و کارگردانها استفاده کنید.
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.metrics.pairwise import linear_kernel
# فرض کنید اطلاعات فیلمها شامل نام و ژانر باشد
movies = pd.DataFrame({
'Title': ['Movie1', 'Movie2', 'Movie3'],
'Genre': ['Action', 'Action Thriller', 'Thriller']
})
# ایجاد ماتریس TF-IDF
tfidf = TfidfVectorizer(stop_words='english')
tfidf_matrix = tfidf.fit_transform(movies['Genre'])
# محاسبه شباهت
cosine_sim = linear_kernel(tfidf_matrix, tfidf_matrix)
# تابعی برای توصیه فیلمها
def recommend_movies(title):
idx = movies[movies['Title'] == title].index[]
sim_scores = list(enumerate(cosine_sim[idx]))
sim_scores = sorted(sim_scores, key=lambda x: x[1], reverse=True)
sim_scores = sim_scores[1:3] # انتخاب 2 فیلم مشابه
movie_indices = [i[] for i in sim_scores]
return movies['Title'].iloc[movie_indices]
# تست
print(recommend_movies('Movie1'))
آموزش مقدماتی پایتون (رایگان)
۴. پیادهسازی سیستم توصیهگر مبتنی بر همکاری
در این نوع، سیستم به بررسی نظرات کاربرها و شباهتهای کاربران گوشی میدهد. یکی از الگوریتمهای متداول، K-Nearest Neighbors است.
from sklearn.neighbors import NearestNeighbors
# ایجاد ماتریس pivot
pivot_table = df.pivot(index='UserID', columns='ItemID', values='Rating').fillna()
# مدل KNN
knn = NearestNeighbors(n_neighbors=2, algorithm='brute', metric='cosine')
knn.fit(pivot_table.T)
# پیدا کردن همسایگان نزدیک
distances, indices = knn.kneighbors(pivot_table.T)
# توصیه کالاها
def recommend_items(user_id):
user_ratings = pivot_table.loc[user_id].values.reshape(1, -1)
distances, indices = knn.kneighbors(user_ratings, n_neighbors=3)
return pivot_table.columns[indices.flatten()]
# تست
print(recommend_items(1))
۵. ارزیابی سیستم
برای ارزیابی عملکرد سیستم توصیهگر شما میتوانید از معیارهای مختلفی مانند دقت، فراخوانی و F1-Score استفاده کنید.
نتیجه گیری
با استفاده از این مراحل، سیستم توصیه گر در پایتون بسازید. پایتون و کتابخانههای آن ابزارهای قدرتمندی برای انجام این کار فراهم میآورند. با پیشرفت در این حوزه، میتوانید الگوریتمهای پیچیدهتر و دادههای بیشتری را نیز برای بهبود عملکرد سیستم اضافه کنید.
امیر: فک کنم قبلا در خصوص این سیستم ها صحبت شده، سیستم های توصیه گر اگر بتونن خوب کار کنند، باعث رشد حداقل 30 درصدی فروش تو فروشگاه های آنلاین میشن، مثال دنیای واقعیش رو بزنیم مثل شلف فروشگاه های بزرگ میمونه، جنس ها خیلی قشنگ و البته هدفمند چیده شدن، بعد شما برای خرید 5 قلم جنس رفته بودی فروشگاه، اما آخرش میبینی 15 قلم جنس برداشتی!! سیستم های توصیه گر هم میتونن برای پروژه های فروشگاه آنلاین همین کار و انجام بدن، طرف میخواد 3 قلم جنس بخره، یهو 7 قلم جنس به سبد خریدش اضافه میکنه.