Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Contoh sistem pengesyoran dalam Python

Contoh sistem pengesyoran dalam Python

WBOY
WBOYasal
2023-06-10 08:51:152002semak imbas

Python pada masa ini merupakan bahasa pengaturcaraan yang sangat popular dengan sistem perpustakaan yang berkuasa dan sintaks yang mudah dipelajari menjadikannya pilihan pertama untuk membangunkan pelbagai aplikasi. Dalam bidang pembelajaran mesin, Python juga merupakan bahasa pengaturcaraan yang biasa digunakan. Artikel ini akan memperkenalkan contoh penggunaan Python untuk membina sistem pengesyoran.

Sistem pengesyoran merujuk kepada algoritma dan aplikasi yang mengesyorkan produk, kandungan atau perkhidmatan kepada pengguna berdasarkan gelagat sejarah, minat dan maklumat lain mereka. Sistem pengesyoran digunakan secara meluas dalam e-dagang, media sosial, pembacaan berita dan bidang lain. Python menyediakan beberapa perpustakaan dan rangka kerja yang boleh digunakan untuk membina sistem pengesyoran.

1. Jenis sistem pengesyoran

Sistem pengesyoran terbahagi kepada dua jenis: pengesyoran berasaskan kandungan dan pengesyoran penapisan kolaboratif.

Pengesyoran berasaskan kandungan ialah mengesyorkan produk yang serupa berdasarkan hobi dan sifat produk yang lalu pengguna. Kaedah ini memerlukan menganalisis ciri produk Anda boleh menggunakan perpustakaan pemprosesan teks NLTK atau Scikit-belajar untuk memproses maklumat teks atribut produk, seperti tajuk dan perihalan produk.

Pengesyoran penapisan kolaboratif adalah untuk menemui hubungan antara pengguna berdasarkan data gelagat sejarah mereka dan mengesyorkan produk yang mungkin mereka minati. Terdapat dua kaedah utama untuk pengesyoran penapisan kolaboratif: penapisan kolaboratif berasaskan pengguna dan penapisan kolaboratif berasaskan item.

Penapisan kolaboratif berasaskan pengguna membuat pengesyoran berdasarkan persamaan antara pengguna, iaitu mencari pengguna lain yang mempunyai minat yang sama dengan pengguna semasa dan mengesyorkan produk kepada pengguna semasa berdasarkan produk yang disukai pengguna ini. Kaedah ini memerlukan pengiraan persamaan antara pengguna, dan anda boleh menggunakan cosine_similarity dalam Scikit-belajar untuk mengira persamaan kosinus.

Penapisan kolaboratif berasaskan item membuat pengesyoran berdasarkan persamaan antara item, iaitu, ia mencari item yang serupa dengan item yang disukai pengguna semasa dan mengesyorkan item serupa ini kepada pengguna semasa. Kaedah ini memerlukan pengiraan persamaan antara item Anda boleh menggunakan pairwise_distances dalam Scikit-belajar untuk mengira jarak Euclidean atau jarak kosinus.

2. Contoh sistem pengesyoran

Seterusnya, kami akan memperkenalkan contoh penggunaan Python untuk membina sistem pengesyoran kolaboratif berasaskan item.

Pertama, kita perlu menyediakan data. Kami memilih set data penilaian filem, yang mengandungi maklumat seperti ID filem, ID pengguna dan penilaian. Kita boleh menggunakan perpustakaan Pandas untuk membaca dan memproses data. Berikut ialah contoh kod:

import pandas as pd
ratings_data = pd.read_csv('ratings.csv')
movies_data = pd.read_csv('movies.csv')

Seterusnya, kami perlu praproses data dan mengekstrak maklumat yang kami perlukan. Kami perlu memetakan ID filem kepada nama filem dan ID pengguna kepada label. Berikut ialah contoh kod:

# 将电影ID映射为电影名称
movie_names = {}
for index, row in movies_data.iterrows():
    movie_names[row['movieId']] = row['title']

# 将用户ID映射为标号
user_ids = {}
user_counter = 0
for index, row in ratings_data.iterrows():
    user_id = row['userId']
    if user_id not in user_ids:
        user_ids[user_id] = user_counter
        user_counter += 1

Kemudian, kita perlu membina matriks penilaian filem, di mana baris matriks mewakili pengguna, lajur mewakili filem dan setiap elemen dalam matriks mewakili penilaian pengguna bagi filem. Terdapat beberapa nilai yang hilang dalam matriks, menunjukkan bahawa filem yang sepadan belum dinilai oleh pengguna. Kita perlu mengisi nilai yang hilang ini menggunakan kaedah isian. Berikut ialah contoh kod:

import numpy as np
n_users = len(user_ids)
n_movies = max(movie_names.keys())
rating_matrix = np.zeros((n_users, n_movies))
for index, row in ratings_data.iterrows():
    user_id = row['userId']
    movie_id = row['movieId']
    rating = row['rating']
    rating_matrix[user_ids[user_id], movie_id] = rating

# 使用均值填充缺失值
mean_ratings = np.zeros((n_users,))
for i in range(n_users):
    ratings = rating_matrix[i, :]
    ratings = ratings[ratings > 0]
    mean_ratings[i] = ratings.mean()
    rating_matrix[i, ratings == 0] = mean_ratings[i]

Kemudian, kita perlu mengira matriks persamaan antara filem Kita boleh menggunakan fungsi berpasangan_jarak dalam Scikit-belajar untuk mengira jarak Euclidean atau jarak kosinus. Di sini kita memilih jarak kosinus. Berikut ialah contoh kod:

from sklearn.metrics.pairwise import pairwise_distances
movie_similarity = 1 - pairwise_distances(rating_matrix.T, metric='cosine')

Akhir sekali, kami perlu mengesyorkan filem kepada pengguna. Kami boleh mengesyorkan filem berdasarkan filem kegemaran pengguna yang serupa dengannya. Berikut ialah contoh kod:

# 找到用户最喜欢的电影
user_id = 0
user_ratings = rating_matrix[user_id, :]
fav_movie = np.argmax(user_ratings)
print('用户 %d 最喜欢的电影是 %s' % (user_id, movie_names[fav_movie]))

# 根据相似度找到相似的电影
similar_movies = movie_similarity[fav_movie, :]
top_k = 5
top_k_movies = np.argsort(similar_movies)[::-1][:top_k]
for i, movie_id in enumerate(top_k_movies):
    print('Top %d 推荐电影是 %s' % (i+1, movie_names[movie_id]))

Di atas ialah contoh Python sistem pengesyoran penapisan kolaboratif berasaskan item.

Ringkasan

Sistem pengesyoran ialah aplikasi pembelajaran mesin yang digunakan secara meluas Python menyediakan banyak perpustakaan dan rangka kerja yang boleh membantu pembangun membina sistem pengesyoran dengan cepat. Artikel ini memperkenalkan contoh cara menggunakan Python untuk membina sistem pengesyoran penapisan kolaboratif berasaskan item. Saya harap ia akan membantu pembaca.

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

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn