Example #1
0
 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)
Example #2
0
 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)
Example #3
0
    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)
Example #4
0
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)
Example #8
0
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)