code: def write_model(self, filename='scores', filepath='', output_format='csv'):
          
          scores_array = np.array([])
          for obs in self.observations:
              c, sd = self.__get_centroids_sd(obs)
              points, ids = self.__get_features_for_observation(observation=obs, last_column_is_id=True)
  
              b = np.array([])
              for p in points:
                  b = np.append(b, [self.get_single_score(p, centroids=c, sd=sd)])
  
              scores_array = np.vstack([scores_array, b]) if scores_array.size else b
  
          scores_array = np.concatenate((ids[:, np.newaxis], scores_array.transpose()), axis=1)
          header = 'id,'+','.join(self.observations)
  
          try:
              if output_format == 'csv':
                  filename = join(filepath, filename) + '.' + output_format
                  np.savetxt(filename, scores_array, delimiter=",", fmt='%i', header=header,comments='')
              else:
                  print(scores_array)
          except:
              logging.error("Unexpected error on writing output")
docs: This method calculates the scores and writes them to a file the data frame received. If the output format
              is other than 'csv' it will print the scores.
  
              :param filename: the name to give to the file
              :type filename: string
              :param filepath: the path to save the file
              :type filepath: string
              :param output_format: the format of the file to write ('csv')
              :type output_format: string