def test_default_transform(): process = BinningProcess(variable_names) with raises(NotFittedError): process.transform(X) process.fit(X, y) X_transform = process.transform(X) optb = OptimalBinning() x = X[:, 5] optb.fit(x, y) assert optb.transform(x) == approx(X_transform[:, 5], rel=1e-6)
def test_default_transform_pandas(): df = pd.DataFrame(data.data, columns=data.feature_names) process = BinningProcess(variable_names) process.fit(df, y) with raises(TypeError): X_transform = process.transform(df.to_dict(), metric="woe") X_transform = process.transform(df, metric="woe") optb = OptimalBinning() x = X[:, 5] optb.fit(x, y) assert optb.transform(x, metric="woe") == approx( X_transform.values[:, 5], rel=1e-6)
def test_transform_some_variables(): process = BinningProcess(variable_names) process.fit(X, y) with raises(TypeError): process.transform(X, {}) with raises(ValueError): process.transform(X, ["new_1", "new_2"]) selected_variables = [ 'mean area', 'mean smoothness', 'mean compactness', 'mean concavity' ] X_transform = process.transform(X, selected_variables) assert X_transform.shape[1] == 4 for i in range(3, 7): optb = OptimalBinning() x = X[:, i] optb.fit(x, y) assert optb.transform(x) == approx(X_transform[:, i - 3], rel=1e-6)
def test_default_transform_multiclass(): data = load_wine() variable_names = data.feature_names X = data.data y = data.target process = BinningProcess(variable_names) process.fit(X, y) X_transform = process.transform(X) optb = process.get_binned_variable(variable_names[0]) assert isinstance(optb, MulticlassOptimalBinning) optb = MulticlassOptimalBinning() x = X[:, 5] optb.fit(x, y) assert optb.transform(x) == approx(X_transform[:, 5], rel=1e-6)
def test_default_transform_continuous(): data = load_boston() variable_names = data.feature_names X = data.data y = data.target process = BinningProcess(variable_names) process.fit(X, y) X_transform = process.transform(X, metric="mean") optb = process.get_binned_variable(variable_names[0]) assert isinstance(optb, ContinuousOptimalBinning) optb = ContinuousOptimalBinning() x = X[:, 5] optb.fit(x, y) assert optb.transform(x, metric="mean") == approx( X_transform[:, 5], rel=1e-6)