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