0

J'ai la similarité que je reçois de pairwise dans la bibliothèque Python pour CF basé sur l'élément. Ensuite, j'utilise cette prédiction de Implementing your own recommender systems in Python.Élément Prévision à partir du système de recommandation

pred = ratings.dot(similarity)/np.array([np.abs(similarity).sum(axis=1)]) 

mais j'obtiens une mauvaise prédiction d'évaluation. La prédiction d'évaluation est de l'ordre de 0,1 à 0,9. Ce calcul de pred est-il valide?

+0

Qu'espérez-vous obtenir? '0.1 - 0.9' ressemble à une plage normalisée, ce qui devrait être très bien, mais toutes vos valeurs seront comprises entre' 0.01 et 0.99 (ou 1) 'en fonction de leur correspondance. Pensez-vous pouvoir récupérer des chiffres plus importants? (Je ne verrais aucune différence dans la performance de la recommandation, mais entre une plage normalisée et une plage non normalisée). –

+0

Je veux obtenir la valeur prédite dans la plage 0-5. Est-il possible de convertir cela? – Billy

+0

Voici ce que j'ai obtenu de cette prédiction: [0.11780604 0.12146975 0.118728 ..., 0.11945179 0.11526597 0.11711326] – Billy

Répondre

1

Le problème réside dans la façon dont les cotes d'utilisateur moyennes sont calculées dans la fonction de prédiction.

La moyenne d'appel sur le tableau d'évaluation comprend toutes les 0 valeurs qui représentent des films non notés par l'utilisateur.

Vous voudrez créer la rangée d'évaluations en effectuant la fonction moyenne seulement sur les évaluations évaluées par l'utilisateur. Cela peut être effectué par une simple opération de groupage sur les données du train

mean_user_rating = train_data.groupby('user_id')['rating'].mean()