'Return the most similar items to the given item, ordered
from most similar to least.
Parameters
item_id:  int or string
ID of item for which to find most similar other items
how_many: int
Desired number of most similar items to find (default=None ALL)'

def most_similar_items(self, item_id, how_many=None):

    old_how_many = self.similarity.num_best
    self.similarity.num_best = ((how_many + 1) if (how_many is not None) else None)
    similarities = self.similarity[item_id]
    self.similarity.num_best = old_how_many
    return np.array([item for (item, pref) in similarities if ((item != item_id) and (not np.isnan(pref)))])
