docs: def weigh_users(X_test, model, classifier_type="LinearSVC"):
      """
      Uses a trained model and the unlabelled features to produce a user-to-label distance matrix.
  
      Inputs:  - feature_matrix: The graph based-features in either NumPy or SciPy sparse array format.
               - model: A trained scikit-learn One-vs-All multi-label scheme of linear SVC models.
               - classifier_type: A string to be chosen among: * LinearSVC (LibLinear)
                                                               * LogisticRegression (LibLinear)
                                                               * RandomForest
  
      Output:  - decision_weights: A NumPy array containing the distance of each user from each label discriminator.
      """
      if classifier_type == "LinearSVC":
          decision_weights = model.decision_function(X_test)
      elif classifier_type == "LogisticRegression":
          decision_weights = model.predict_proba(X_test)
      elif classifier_type == "RandomForest":
          # if issparse(X_test):
          #     decision_weights = np.hstack(a[:, 1].reshape(X_test.shape[0], 1) for a in model.predict_proba(X_test.tocsr()))
          # else:
          #     decision_weights = np.hstack(a[:, 1].reshape(X_test.shape[0], 1) for a in model.predict_proba(X_test))
          if issparse(X_test):
              decision_weights = model.predict_proba(X_test.tocsr())
          else:
              decision_weights = model.predict_proba(X_test)
      else:
          print("Invalid classifier type.")
          raise RuntimeError
  
      return decision_weights