new_contents: import numpy as np
  import pandas  as pd
  
  header = ['user_id', 'item_id', 'rating', 'timestamp']
  df = pd.read_csv('ml-100k/u.data', sep='\t', names=header)
  n_users = df.user_id.unique().shape[0]
  n_items = df.item_id.unique().shape[0]
  print('Number of users = ' + str(n_users) + ' | Number of movies = ' + str(n_items))
  #你可以使用scikit-learn库将数据集分割成测试和训练。Cross_validation.train_test_split
  #根据测试样本的比例（test_size），本例中是0.25，来将数据混洗并分割成两个数据集
  from sklearn import model_selection  as ms
  train_data, test_data = ms.train_test_split(df, test_size=0.25)
  #Create two user-item matrices, one for training and another for testing
  train_data_matrix = np.zeros((n_users, n_items))
  for line in train_data.itertuples():
      train_data_matrix[line[1]-1, line[2]-1] = line[3] 
  test_data_matrix = np.zeros((n_users, n_items))
  for line in test_data.itertuples():
      test_data_matrix[line[1]-1, line[2]-1] = line[3]
      
  from sklearn.metrics.pairwise import pairwise_distances
  user_similarity = pairwise_distances(train_data_matrix, metric='cosine')
  item_similarity = pairwise_distances(train_data_matrix.T, metric='cosine')
  print(user_similarity)
  
  def predict(ratings, similarity, type='user'):
      #ratings.mean(axis=1) 按行求平均值
      if type == 'user':
          mean_user_rating = ratings.mean(axis=1)
          #You use np.newaxis so that mean_user_rating has same format as ratings
          ratings_diff = (ratings - mean_user_rating[:, np.newaxis]) 
          pred = mean_user_rating[:, np.newaxis] + similarity.dot(ratings_diff) / np.array([np.abs(similarity).sum(axis=1)]).T
      elif type == 'item':
          pred = ratings.dot(similarity) / np.array([np.abs(similarity).sum(axis=1)])     
      return pred
      
  item_prediction = predict(train_data_matrix, item_similarity, type='item')
  user_prediction = predict(train_data_matrix, user_similarity, type='user')
  
subject: Create recommend.py