<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 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