diff --git a/scikits/crab/recommenders/knn/classes.py b/scikits/crab/recommenders/knn/classes.py index bf96af3..7e4e86d 100644 --- a/scikits/crab/recommenders/knn/classes.py +++ b/scikits/crab/recommenders/knn/classes.py @@ -532,12 +532,15 @@ def estimate_preference(self, user_id, item_id, **params): prefs = np.array([self.model.preference_value(to_user_id, item_id) for to_user_id in nearest_neighbors]) - - prefs = prefs[~np.isnan(prefs)] - similarities = similarities[~np.isnan(prefs)] - - prefs_sim = np.sum(prefs[~np.isnan(similarities)] * - similarities[~np.isnan(similarities)]) + + temp_prefs = [~np.isnan(prefs)] + temp_similarities = [~np.isnan(similarities)] + noNaN_indices = np.logical_and(temp_prefs, temp_similarities) + + prefs_sim = np.sum(prefs[noNaN_indices[0] == True] * + similarities[noNaN_indices[0] == True]) + + similarities = similarities[~np.isnan(similarities)] total_similarity = np.sum(similarities) #Throw out the estimate if it was based on no data points,