def test_fit_from_datasets(self): uf_as_dataset = create_tensorrec_dataset_from_sparse_matrix( self.user_features) if_as_dataset = create_tensorrec_dataset_from_sparse_matrix( self.item_features) int_as_dataset = create_tensorrec_dataset_from_sparse_matrix( self.interactions) model = TensorRec(n_components=10) model.fit(int_as_dataset, uf_as_dataset, if_as_dataset, epochs=10)
def test_fit_interactions_as_dataset(self): int_as_dataset = create_tensorrec_dataset_from_sparse_matrix( self.interactions, False) model = TensorRec(n_components=10) model.fit(int_as_dataset, self.user_features, self.item_features, epochs=10)
def test_fit_fail_batching_dataset(self): model = TensorRec(n_components=10) interactions_as_dataset = create_tensorrec_dataset_from_sparse_matrix( self.interactions) with self.assertRaises(BatchNonSparseInputException): model.fit(interactions_as_dataset, self.user_features, self.item_features, epochs=10, user_batch_size=2)
model = TensorRec(n_components=2, biased=False, loss_graph=BalancedWMRBLossGraph(), item_repr_graph=ReLURepresentationGraph(), n_tastes=3) # Make some random selections of movies and users we want to plot movies_to_plot = np.random.choice(a=item_features.shape[0], size=50, replace=False) user_to_plot = np.random.choice(a=user_features.shape[0], size=100, replace=False) # Coerce data to datasets for faster fitting train_interactions_ds = create_tensorrec_dataset_from_sparse_matrix( train_interactions) user_features_ds = create_tensorrec_dataset_from_sparse_matrix(user_features) item_features_ds = create_tensorrec_dataset_from_sparse_matrix(item_features) # Iterate through 1000 epochs, outputting a JPG plot each epoch for epoch in range(epochs): model.fit_partial(interactions=train_interactions_ds, user_features=user_features_ds, item_features=item_features_ds, **fit_kwargs) # The position of a movie or user is that movie's/user's 2-dimensional representation. movie_positions = model.predict_item_representation(item_features_ds) user_positions = model.predict_user_representation(user_features_ds) # Handle multiple tastes, if applicable. If there are more than 1 taste per user, only the first of each user's
fit_kwargs = {'epochs': 1, 'alpha': 0.0001, 'verbose': True, 'learning_rate': .01, 'n_sampled_items': int(item_features.shape[0] * .1)} # Build the TensorRec model model = TensorRec(n_components=2, biased=False, loss_graph=BalancedWMRBLossGraph(), item_repr_graph=ReLURepresentationGraph(), n_tastes=3) # Make some random selections of movies and users we want to plot movies_to_plot = np.random.choice(a=item_features.shape[0], size=50, replace=False) user_to_plot = np.random.choice(a=user_features.shape[0], size=100, replace=False) # Coerce data to datasets for faster fitting train_interactions_ds = create_tensorrec_dataset_from_sparse_matrix(train_interactions) user_features_ds = create_tensorrec_dataset_from_sparse_matrix(user_features) item_features_ds = create_tensorrec_dataset_from_sparse_matrix(item_features) # Iterate through 1000 epochs, outputting a JPG plot each epoch for epoch in range(epochs): model.fit_partial(interactions=train_interactions_ds, user_features=user_features_ds, item_features=item_features_ds, **fit_kwargs) # The position of a movie or user is that movie's/user's 2-dimensional representation. movie_positions = model.predict_item_representation(item_features_ds) user_positions = model.predict_user_representation(user_features_ds) # Handle multiple tastes, if applicable. If there are more than 1 taste per user, only the first of each user's
def test_fit_from_datasets(self): uf_as_dataset = create_tensorrec_dataset_from_sparse_matrix(self.user_features) if_as_dataset = create_tensorrec_dataset_from_sparse_matrix(self.item_features) int_as_dataset = create_tensorrec_dataset_from_sparse_matrix(self.interactions) model = TensorRec(n_components=10) model.fit(int_as_dataset, uf_as_dataset, if_as_dataset, epochs=10)
def test_fit_fail_batching_dataset(self): model = TensorRec(n_components=10) interactions_as_dataset = create_tensorrec_dataset_from_sparse_matrix(self.interactions) with self.assertRaises(ValueError): model.fit(interactions_as_dataset, self.user_features, self.item_features, epochs=10, user_batch_size=2)
model = TensorRec(n_components=2, biased=False, loss_graph=BalancedWMRBLossGraph(), item_repr_graph=ReLURepresentationGraph(), n_tastes=3) # Make some random selections of movies and users we want to plot movies_to_plot = np.random.choice(a=item_features.shape[0], size=50, replace=False) user_to_plot = np.random.choice(a=user_features.shape[0], size=100, replace=False) # Coerce data to datasets for faster fitting train_interactions_ds = create_tensorrec_dataset_from_sparse_matrix( train_interactions, is_coo=False) user_features_ds = create_tensorrec_dataset_from_sparse_matrix(user_features, is_coo=True) item_features_ds = create_tensorrec_dataset_from_sparse_matrix(item_features, is_coo=True) # Iterate through 1000 epochs, outputting a JPG plot each epoch for epoch in range(epochs): model.fit_partial(interactions=train_interactions_ds, user_features=user_features_ds, item_features=item_features_ds, **fit_kwargs) # The position of a movie or user is that movie's/user's 2-dimensional representation. movie_positions = model.predict_item_representation(item_features_ds) user_positions = model.predict_user_representation(user_features_ds)