예제 #1
0
def test_get_column_indices_pandas_nonunique_columns_error(key):
    pd = pytest.importorskip("pandas")
    toy = np.zeros((1, 5), dtype=int)
    columns = ["col1", "col1", "col2", "col3", "col2"]
    X = pd.DataFrame(toy, columns=columns)

    err_msg = "Selected columns, {}, are not unique in dataframe".format(key)
    with pytest.raises(ValueError) as exc_info:
        _get_column_indices(X, key)
    assert str(exc_info.value) == err_msg
예제 #2
0
    def _grid(self, X, features, percentiles, grid_resolution):
        features_indices = np.asarray(
            _get_column_indices(X, features), dtype=np.int32, order='C'
        ).ravel()

        grid, values = _grid_from_X(
            _safe_indexing(X, features_indices, axis=1), percentiles,
            grid_resolution
        )

        return grid, values
예제 #3
0
def accumulated_local_effects(est, x, feature, n_quantiles):
    """calculates ale for a feature"""
    ale = np.array(n_quantiles,)
    features_indices = np.asarray(
        _get_column_indices(x, feature), dtype=np.int32, order='C'
    ).ravel()
    quantiles = _quantiles_from_x(_safe_indexing(x, features_indices, axis=1), n_quantiles)
    x_feat = _safe_indexing(x, feature, axis=1)
    if x_feat.to_numpy().dtype.name == "category" or x_feat.to_numpy().dtype == "object":
        ale = _ale_for_categorical(est, quantiles, x, x_feat)
    else:
        ale = _ale_for_numeric(est, quantiles, x, x_feat)
    return ale
예제 #4
0
def test_get_column_indices_error(key, err_msg):
    pd = pytest.importorskip("pandas")
    X_df = pd.DataFrame(X_toy, columns=['col_0', 'col_1', 'col_2'])

    with pytest.raises(ValueError, match=err_msg):
        _get_column_indices(X_df, key)