Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Sistem pengesyoran dalam Python

Sistem pengesyoran dalam Python

WBOY
WBOYke hadapan
2023-09-19 22:45:04768semak imbas

Sistem pengesyoran dalam Python

Sistem pengesyoran ialah alat dalam Python yang mengesyorkan item atau kandungan kepada pengguna berdasarkan keutamaan dan tingkah laku masa lalu mereka. Teknologi ini menggunakan algoritma untuk meramalkan pilihan masa depan pengguna untuk menyampaikan kandungan yang paling relevan kepada mereka.

Skop sistem ini sangat luas dan ia digunakan secara meluas dalam pelbagai industri seperti e-dagang, perkhidmatan penstriman dan media sosial. Produk, filem, muzik, buku, dsb. semuanya boleh disyorkan melalui sistem ini. Menyediakan pengesyoran yang diperibadikan bukan sahaja membantu meningkatkan penglibatan dan kesetiaan pelanggan, tetapi juga boleh meningkatkan jualan.

Jenis sistem pengesyoran

Sistem pengesyoran berasaskan kandungan

Idea di sebalik operasi ini ialah pengguna boleh mendapatkan pengesyoran yang setanding dengan item yang pernah mereka dedahkan sebelum ini. Sistem ini menggunakan algoritma untuk menentukan item yang hampir sama dengan keutamaan pengguna, dengan matlamat untuk mencipta senarai cadangan yang sesuai untuk pengguna. Dalam tetapan ini, algoritma menganalisis data yang berkaitan dengan item, seperti kualiti dan penilaian pengguna, untuk menentukan cadangan yang perlu dibuat.

Algoritma

  • Langkah 1 − Import perpustakaan yang diperlukan

  • Langkah 2 - Muatkan Set Data

  • Langkah 3 - Praproses data

  • Langkah 4 - Kira matriks persamaan

  • Langkah 5 − Untuk setiap pengguna −

    • Pilih item yang mereka telah berinteraksi dengan

    • Untuk setiap item yang dipilih dalam langkah 5a -

      • Dapatkan skor persamaan dengan semua item lain

      • Kira purata wajaran skor persamaan menggunakan penilaian pengguna sebagai pemberat

    • Isih item dalam tertib menurun berdasarkan markah persamaan wajaran

    • Syorkan N item teratas kepada pengguna

  • Langkah 6 - Kembalikan cadangan daripada semua pengguna.

Contoh

import pandas as pd
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.metrics.pairwise import cosine_similarity

# Load data
data = pd.read_csv('movies.csv')

# Compute TF-IDF vectors for each movie
tfidf = TfidfVectorizer(stop_words='english')
tfidf_matrix = tfidf.fit_transform(data['description'])

# Compute cosine similarity between all movies
cosine_sim = cosine_similarity(tfidf_matrix, tfidf_matrix)

# Function to get top 10 similar movies based on input movie
def get_recommendations(title):
   idx = data[data['title'] == title].index[0]
   sim_scores = list(enumerate(cosine_sim[idx]))
   sim_scores = sorted(sim_scores, key=lambda x: x[1], reverse=True)
   sim_scores = sim_scores[1:11]
   movie_indices = [i[0] for i in sim_scores]
   return data.iloc[movie_indices]

# Example usage: get top 10 movies similar to 'The Godfather'
get_recommendations('The Godfather')

Kami memuatkan data filem daripada fail CSV tempatan ke dalam bingkai data. Kami menukar perihalan filem kepada matriks dengan menggunakan fungsi fit_transform() dan mengira matriks persamaan kosinus.

Kemudian kami mentakrifkan fungsi yang mengambil tajuk filem sebagai parameter dan mendapatkan semula indeks tajuk filem dalam bingkai data jika ia wujud.

Kami kemudian membuat senarai tupel yang mengandungi skor persamaan antara tajuk filem yang diluluskan dan semua tajuk filem lain. Setiap tupel terdiri daripada indeks dan skor persamaan. Kami kemudiannya memaparkan senarai tajuk filem dengan mengindeks bingkai data.

Output

                                title  \
783                 The Godfather   
1512          The Godfather: Part II   
1103                       Casino   
3509  Things to Do in Denver When   
1246                       Snatch   
3094             Road to Perdition   
2494                     Scarface   
1244                    Following   
2164                       Dancer   
2445        The Day of the Jackal   

Sistem pengesyoran penapisan kolaboratif

Sebaliknya, ini bergantung pada data pengguna lain untuk menjana cadangan. Sistem sedemikian membandingkan pilihan dan gelagat pelbagai pengguna dan kemudian mencadangkan item yang mungkin disukai oleh pengguna lain yang mempunyai cita rasa yang serupa. Penapisan kolaboratif secara amnya lebih tepat daripada sistem berasaskan kandungan kerana ia mengambil kira pendapat ramai pengguna apabila menjana cadangan.

Algoritma

  • Langkah 1 − Import perpustakaan yang diperlukan.

  • Langkah 2 - Muatkan fail "ratings.csv" yang memberikan penilaian pengguna.

  • Langkah 3 - Cipta "user_item_matrix" untuk menukar data rating pengguna kepada matriks

  • Langkah 4 - Kira persamaan rating pengguna menggunakan persamaan kosinus.

  • Langkah 5 - Kenal pasti pengguna yang serupa

  • Langkah 6 - Kira purata rating.

  • Langkah 7 - Pilih ID pengguna sasaran.

  • Langkah 8 - Cetak ID dan rating filem.

Contoh

import pandas as pd
from sklearn.metrics.pairwise import cosine_similarity

# Load data
ratings_data = pd.read_csv('ratings.csv')

# Create user-item matrix
user_item_matrix = pd.pivot_table(ratings_data, values='rating', index='userId', columns='movieId')

# Calculate cosine similarity between users
user_similarity = cosine_similarity(user_item_matrix)

# Get top n similar users for each user
def get_top_similar_users(similarity_matrix, user_index, n=10):
    similar_users = similarity_matrix[user_index].argsort()[::-1]
    return similar_users[1:n+1]

# Get recommended items for a user based on similar users
def get_recommendations(user_id, user_similarity, user_item_matrix, n=10):
   similar_users = get_top_similar_users(user_similarity, user_id, n)
   recommendations = user_item_matrix.iloc[similar_users].mean(axis=0).sort_values(ascending=False).head(n)
   return recommendations

# Example usage
user_id = 1
recommendations = get_recommendations(user_id, user_similarity, user_item_matrix)
print("Top 10 recommended movies for user", user_id)
print(recommendations)

Output

Top 10 recommended movies for user 1
movieId
1196        5.000000
50            5.000000
1210        5.000000
260          5.000000
1198        5.000000
2571        5.000000
527          5.000000
1197        5.000000
2762        5.000000
858          4.961538

Kesimpulan

Tugas untuk mencipta sistem pengesyor boleh membawa kerumitan yang besar kepada pengaturcara, tetapi ia adalah alat berharga yang boleh membawa manfaat yang besar. Membina sistem pengesyoran dengan Python menawarkan pelbagai pilihan yang memudahkan proses penciptaan dan penyesuaian. Walau bagaimanapun, seperti mana-mana usaha pengekodan, masalah berpotensi boleh timbul apabila membangunkan sistem pengesyor. Menyedari komplikasi biasa ini dan mengambil langkah untuk menanganinya adalah penting untuk memastikan kejayaan sistem pengesyor.

Akhirnya, adalah penting untuk diingat bahawa sistem pengesyor boleh menjadi aset yang sangat berkuasa, jadi adalah berbaloi untuk melaburkan masa dan usaha yang diperlukan untuk memastikan ia dibina dengan betul dan beroperasi secara optimum.

Atas ialah kandungan terperinci Sistem pengesyoran dalam Python. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:tutorialspoint.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam