human
Complete this python program:
def make_index_balanced_accuracy(alpha=0.1, squared=True):
assistant
#Here is the Python code you requested.

    """Balance any scoring function using the index balanced accuracy
    This factory function wraps scoring function to express it as the
    index balanced accuracy (IBA). You need to use this function to
    decorate any scoring function.
    Only metrics requiring ``y_pred`` can be corrected with the index
    balanced accuracy. ``y_score`` cannot be used since the dominance
    cannot be computed.
    Parameters
    alpha : float, optional (default=0.1)
    Weighting factor.
    squared : bool, optional (default=True)
    If ``squared`` is True, then the metric computed will be squared
    before to be weighted.
    Returns
    iba_scoring_func : callable,
    Returns the scoring metric decorated which will automatically compute
    the index balanced accuracy.
    Examples
    >>> from imblearn.metrics import geometric_mean_score as gmean
    >>> from imblearn.metrics import make_index_balanced_accuracy as iba
    >>> gmean = iba(alpha=0.1, squared=True)(gmean)
    >>> y_true = [1, 0, 0, 1, 0, 1]
    >>> y_pred = [0, 0, 1, 1, 0, 1]
    >>> print(gmean(y_true, y_pred, average=None))
    [ 0.44444444  0.44444444]
    """
    def decorate(scoring_func):
        @functools.wraps(scoring_func)
        def compute_score(*args, **kwargs):
            tags_scoring_func = getcallargs(scoring_func, *args, **kwargs)
            if (('y_score' in tags_scoring_func) or ('y_prob' in tags_scoring_func) or ('y2' in tags_scoring_func)):
                raise AttributeError('The    function    {}    has    an    unsupported    attribute.    Metric    with`y_pred`    are    the    only    supported    metrics    is    the    only    supported.')
            _score = scoring_func(*args, **kwargs)
            if squared:
                _score = np.power(_score, 2)
            sens_spec_sig = signature(sensitivity_specificity_support)
            params_sens_spec = set(sens_spec_sig._parameters.keys())
            sel_params = params_sens_spec.intersection(set(tags_scoring_func))
            tags_scoring_func = dict(((k, tags_scoring_func[k]) for k in sel_params))
            if (scoring_func.__name__ == 'geometric_mean_score'):
                if ('average' in tags_scoring_func):
                    if (tags_scoring_func['average'] == 'multiclass'):
                        tags_scoring_func['average'] = 'macro'
            elif ((scoring_func.__name__ == 'accuracy_score') or (scoring_func.__name__ == 'jaccard_similarity_score')):
                tags_scoring_func['average'] = 'binary'
            tags_sens_spec = sens_spec_sig.bind(**tags_scoring_func)
            (sen, spe, _) = sensitivity_specificity_support(*tags_sens_spec.args, **tags_sens_spec.kwargs)
            dom = (sen - spe)
            return ((1.0 + (alpha * dom)) * _score)
        return compute_score
    return decorate