Ejemplo n.º 1
0
def prepare_summary_chart(
    disparity_df,
    metrics_list,
    attributes_list,
    fairness_threshold,
    chart_height,
    chart_width,
    chart_default_sizes,
):
    ## If a specific list of attributes was not passed, use all from df
    if fairness_threshold is None:
        raise ValueError("Fairness threshold cannot be None for the Summary chart.")

    metrics = __sanitize_metrics(metrics_list)

    if attributes_list is None:
        attributes = list(disparity_df["attribute_name"].unique())
    else:
        attributes = to_list(attributes_list)

    __validate_data_inputs(disparity_df, metrics, attributes, fairness_threshold)

    # CHART SIZES
    (chart_height, chart_width) = __calculate_default_sizes(
        chart_height, chart_width, chart_default_sizes, metrics, attributes
    )

    return (metrics, attributes, chart_height, chart_width)
Ejemplo n.º 2
0
def attributes(df, attributes):
    """Validates if attributes exists in the dataframe.

    :param df: a dataframe from Aequitas
    :type df: pandas.core.frame.DataFrame
    :param attributes: an attribute or a list of attributes
    :type attributes: str or list 
    """

    attributes = to_list(attributes)

    for attribute in attributes:
        attribute_df = df[df["attribute_name"] == attribute]

        if len(attribute_df) == 0:
            raise ValueError(
                f"Attribute name {attribute} does not exist in the dataframe.")
Ejemplo n.º 3
0
def metrics(metrics):
    """Validates if  if there are no duplicated metrics, and if all metrics are valid fairness metrics.

    :param metrics: a metric or a list of metrics
    :type metrics: str or list 

    """

    metrics = to_list(metrics)

    if len(metrics) != len(set(metrics)):
        raise ValueError(
            f"There is at least one duplicated metric in the metrics list.")

    for metric in metrics:
        if metric not in METRICS_LIST:
            raise ValueError(f"{metric} is not a valid metric.")
Ejemplo n.º 4
0
def __sanitize_metrics(metrics_list):
    try:
        return [metric.lower() for metric in to_list(metrics_list)]
    except AttributeError:
        print('"metrics_list" must be a list of strings.')