|
2 | 2 | from sklearn.metrics.pairwise import cosine_similarity
|
3 | 3 |
|
4 | 4 | # Load user data
|
5 |
| -user_data = pd.read_csv('user_data.csv') |
| 5 | +user_data = pd.read_csv("user_data.csv") |
6 | 6 |
|
7 | 7 | # Load service data
|
8 |
| -service_data = pd.read_csv('service_data.csv') |
| 8 | +service_data = pd.read_csv("service_data.csv") |
9 | 9 |
|
10 | 10 | # Merge user and service data
|
11 |
| -merged_data = pd.merge(user_data, service_data, on='service_id') |
| 11 | +merged_data = pd.merge(user_data, service_data, on="service_id") |
12 | 12 |
|
13 | 13 | # Create user-service matrix
|
14 |
| -user_service_matrix = merged_data.pivot_table(index='user_id', columns='service_id', values='rating') |
| 14 | +user_service_matrix = merged_data.pivot_table(index="user_id", |
| 15 | + columns="service_id", |
| 16 | + values="rating") |
15 | 17 |
|
16 | 18 | # Calculate similarity between users
|
17 | 19 | user_similarity = cosine_similarity(user_service_matrix)
|
18 | 20 |
|
| 21 | + |
19 | 22 | # Function to generate recommendations for a user
|
20 | 23 | def generate_recommendations(user_id, top_n=5):
|
21 | 24 | # Get index of the user
|
22 | 25 | user_index = user_service_matrix.index.get_loc(user_id)
|
23 |
| - |
| 26 | + |
24 | 27 | # Calculate similarity scores with other users
|
25 | 28 | similarity_scores = user_similarity[user_index]
|
26 |
| - |
| 29 | + |
27 | 30 | # Get top similar users
|
28 |
| - top_similar_users = similarity_scores.argsort()[:-top_n-1:-1] |
29 |
| - |
| 31 | + top_similar_users = similarity_scores.argsort()[:-top_n - 1:-1] |
| 32 | + |
30 | 33 | # Get services rated by similar users
|
31 |
| - services_rated_by_similar_users = user_service_matrix.iloc[top_similar_users].dropna(axis=1) |
32 |
| - |
| 34 | + services_rated_by_similar_users = user_service_matrix.iloc[ |
| 35 | + top_similar_users].dropna(axis=1) |
| 36 | + |
33 | 37 | # Calculate average rating for each service
|
34 | 38 | service_avg_ratings = services_rated_by_similar_users.mean()
|
35 |
| - |
| 39 | + |
36 | 40 | # Sort services based on average ratings
|
37 |
| - recommended_services = service_avg_ratings.sort_values(ascending=False)[:top_n] |
38 |
| - |
| 41 | + recommended_services = service_avg_ratings.sort_values( |
| 42 | + ascending=False)[:top_n] |
| 43 | + |
39 | 44 | return recommended_services
|
40 | 45 |
|
| 46 | + |
41 | 47 | # Generate recommendations for a user
|
42 | 48 | user_id = 1
|
43 | 49 | recommendations = generate_recommendations(user_id, top_n=5)
|
|
0 commit comments