Maison  >  Article  >  développement back-end  >  Exemples de systèmes de recommandation en Python

Exemples de systèmes de recommandation en Python

WBOY
WBOYoriginal
2023-06-10 08:51:151936parcourir

Python est actuellement un langage de programmation très populaire. Son système de bibliothèque puissant et sa syntaxe facile à apprendre en font le premier choix pour développer diverses applications. Dans le domaine du machine learning, Python est également un langage de programmation couramment utilisé. Cet article présentera un exemple d'utilisation de Python pour créer un système de recommandation.

Les systèmes de recommandation font référence à des algorithmes et des applications qui recommandent des produits, du contenu ou des services aux utilisateurs en fonction de leur comportement historique, de leurs intérêts et d'autres informations. Les systèmes de recommandation sont largement utilisés dans le commerce électronique, les médias sociaux, la lecture d'actualités et d'autres domaines. Python fournit des bibliothèques et des frameworks qui peuvent être utilisés pour créer des systèmes de recommandation.

1. Types de systèmes de recommandation

Les systèmes de recommandation sont principalement divisés en deux types : les recommandations basées sur le contenu et les recommandations de filtrage collaboratif.

La recommandation basée sur le contenu consiste à recommander des produits similaires en fonction des passe-temps passés de l'utilisateur et des attributs du produit. Cette méthode nécessite d'analyser les caractéristiques du produit. Vous pouvez utiliser la bibliothèque de traitement de texte NLTK ou Scikit-learn pour traiter les informations textuelles des attributs du produit, telles que le titre et la description du produit.

La recommandation de filtrage collaboratif consiste à découvrir la relation entre les utilisateurs en fonction de leurs données comportementales historiques et à recommander des produits qui pourraient les intéresser. Il existe deux approches principales de recommandation de filtrage collaboratif : le filtrage collaboratif basé sur l'utilisateur et le filtrage collaboratif basé sur les éléments.

Le filtrage collaboratif basé sur l'utilisateur fait des recommandations basées sur la similitude entre les utilisateurs, c'est-à-dire trouver d'autres utilisateurs ayant des intérêts similaires à ceux de l'utilisateur actuel et recommander des produits à l'utilisateur actuel en fonction des produits que ces utilisateurs aiment. Cette méthode nécessite de calculer la similarité entre les utilisateurs, et vous pouvez utiliser cosine_similarity dans Scikit-learn pour calculer la similarité cosinus.

Le filtrage collaboratif basé sur les éléments fait des recommandations basées sur la similarité entre les éléments, c'est-à-dire qu'il trouve des éléments similaires aux éléments que l'utilisateur actuel aime et recommande ces éléments similaires à l'utilisateur actuel. Cette méthode nécessite de calculer la similarité entre les éléments. Vous pouvez utiliser pairwise_distances dans Scikit-learn pour calculer la distance euclidienne ou la distance cosinus.

2. Exemples de systèmes de recommandation

Ensuite, nous présenterons un exemple d'utilisation de Python pour créer un système de recommandation de filtrage collaboratif basé sur des éléments.

Tout d’abord, nous devons préparer les données. Nous sélectionnons un ensemble de données de classification de films, qui contient des informations telles que l'ID du film, l'ID utilisateur et les notes. Nous pouvons utiliser la bibliothèque Pandas pour lire et traiter les données. Voici un exemple de code :

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

Ensuite, nous devons prétraiter les données et extraire les informations dont nous avons besoin. Nous devons mapper les identifiants de film aux noms de films et les identifiants d'utilisateur aux étiquettes. Voici l'exemple de code :

# 将电影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

Ensuite, nous devons construire une matrice de notation de film, les lignes de la matrice représentent les utilisateurs, les colonnes représentent les films et chaque élément de la matrice représente la note du film par l'utilisateur. Il y a des valeurs manquantes dans la matrice, indiquant que le film correspondant n'a pas été noté par les utilisateurs. Nous devons remplir ces valeurs manquantes à l'aide de la méthode fill. Voici l'exemple de code :

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]

Ensuite, nous devons calculer la matrice de similarité entre les films, qui peut être calculée à l'aide de la fonction pairwise_distances dans Scikit-learn pour calculer la distance euclidienne ou la distance cosinus. Ici, nous choisissons la distance cosinus. Voici l'exemple de code :

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

Enfin, nous devons recommander des films à l'utilisateur. Nous pouvons recommander des films basés sur les films préférés de l'utilisateur qui leur ressemblent. Ce qui suit est un exemple de code :

# 找到用户最喜欢的电影
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]))

Ce qui précède est un exemple Python d'un système de recommandation de filtrage collaboratif basé sur des éléments.

Résumé

Le système de recommandation est une application d'apprentissage automatique largement utilisée. Python fournit une multitude de bibliothèques et de frameworks qui peuvent aider les développeurs à créer rapidement des systèmes de recommandation. Cet article présente un exemple d'utilisation de Python pour créer un système de recommandation de filtrage collaboratif basé sur des éléments. J'espère qu'il sera utile aux lecteurs.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn