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
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.