code: def save(self, hyperparams, test_mrr, validation_mrr, elapsed):
      result = hyperparams.copy()
  
      result.update(
          {
              "test_mrr": test_mrr,
              "validation_mrr": validation_mrr,
              "elapsed": elapsed,
              "hash": self._hash(hyperparams),
          }
      )
  
      with open(self._filename, "a+") as out:
          out.write(json.dumps(result) + "\n")
  
imports: import argparse
  import hashlib
  import json
  import os
  import shutil
  import time
  import numpy
  from sklearn.model_selection import ParameterSampler
  from spotlight.datasets.movielens import get_movielens_dataset
  from spotlight.datasets.amazon import get_amazon_dataset
  from spotlight.cross_validation import random_train_test_split, user_based_train_test_split
  from spotlight.sequence.implicit import ImplicitSequenceModel
  from spotlight.factorization.implicit import ImplicitFactorizationModel
  from spotlight.sequence.representations import LSTMNet
  from spotlight.factorization.representations import BilinearNet
  from spotlight.layers import BloomEmbedding, ScaledEmbedding
  from spotlight.evaluation import mrr_score, sequence_mrr_score
  from spotlight.torch_utils import set_seed
label_desc: Use image node_id 3 for calling the Results obj's underlying member method code with example usage: obj.save(hyperparams, test_mrr, validation_mrr, elapsed) without return types