class_docstr: Base class for Item-Item Nearest Neighbour recommender models
  here.
  
  Parameters
  ----------
  K : int, optional
      The number of neighbours to include when calculating the item-item
      similarity matrix
  num_threads : int, optional
      The number of threads to use for fitting the model. Specifying 0
      means to default to the number of cores on the machine.
docstr: Computes and stores the similarity matrix
docstr_tok: ["Computes","and","stores","the","similarity","matrix"]
code: def fit(self, weighted, show_progress=True, callback=None):
      """Computes and stores the similarity matrix"""
      if callback:
          raise NotImplementedError(
              "callback isn't support on ItemItemRecommender.fit"
          )
  
      self.similarity = all_pairs_knn(
          weighted,
          self.K,
          show_progress=show_progress,
          num_threads=self.num_threads,
      ).tocsr()
      self.scorer = NearestNeighboursScorer(self.similarity)
  
imports: import numpy
  from numpy import bincount, log, log1p, sqrt
  from scipy.sparse import coo_matrix, csr_matrix
  from ._nearest_neighbours import NearestNeighboursScorer, all_pairs_knn
  from .recommender_base import RecommenderBase
  from .utils import _batch_call
label_desc: Use image node_id 2 for calling the ItemItemRecommender obj's underlying member method code with example usage: obj.fit(weighted, show_progress, callback) without return types