Spaces:
Running
Running
| import numpy as np | |
| from sklearn.base import BaseEstimator | |
| class SimilarityRecommender(BaseEstimator): | |
| def __init__(self, | |
| item_embeddings: np.ndarray, | |
| mask_value: float = -np.inf): | |
| E = np.asarray(item_embeddings, dtype=np.float64) | |
| self.item_embeddings = E / np.linalg.norm(E, axis=1, keepdims=True) | |
| self.N_, self.d_ = self.item_embeddings.shape | |
| self.mask_value = mask_value | |
| def fit(self, X=None, y=None): | |
| return self | |
| def transform(self, X): | |
| X = np.asarray(X, dtype=np.float64) | |
| U = X @ self.item_embeddings | |
| U /= np.linalg.norm(U, axis=1, keepdims=True) | |
| scores = U @ self.item_embeddings.T | |
| scores[X != 0] = self.mask_value | |
| return scores | |