Skip to content

Commit

Permalink
sklearn pipeline: more tests
Browse files Browse the repository at this point in the history
  • Loading branch information
andreArtelt committed May 12, 2020
1 parent ba97903 commit b6bce97
Showing 1 changed file with 58 additions and 0 deletions.
58 changes: 58 additions & 0 deletions tests/sklearn/test_sklearn_pipeline.py
Original file line number Diff line number Diff line change
Expand Up @@ -168,6 +168,7 @@ def test_pipeline_scaler_softmaxregression():

# Create and fit model
scaler = StandardScaler()
pca = PCA(n_components=2)

model = LogisticRegression(solver='lbfgs', multi_class='multinomial')
model = make_pipeline(scaler, model)
Expand All @@ -180,6 +181,38 @@ def test_pipeline_scaler_softmaxregression():
# Compute counterfactual
compute_counterfactuals(model, x_orig, 0)

x_cf, y_cf, delta = generate_counterfactual(model, x_orig, 0, features_whitelist=None, optimizer="mp", regularization=None, return_as_dict=False)
assert y_cf == 0
assert model.predict(np.array([x_cf])) == 0

x_cf, y_cf, delta = generate_counterfactual(model, x_orig, 0, features_whitelist=None, optimizer="mp", regularization="l1", return_as_dict=False)
assert y_cf == 0
assert model.predict(np.array([x_cf])) == 0

features_whitelist = [0, 1, 2]
x_cf, y_cf, delta = generate_counterfactual(model, x_orig, 0, features_whitelist=features_whitelist, optimizer="mp", regularization=None, return_as_dict=False)
assert y_cf == 0
assert model.predict(np.array([x_cf])) == 0

x_cf, y_cf, delta = generate_counterfactual(model, x_orig, 0, features_whitelist=features_whitelist, optimizer="mp", regularization="l1", return_as_dict=False)
assert y_cf == 0
assert model.predict(np.array([x_cf])) == 0

# More than one preprocessing
model = LogisticRegression(solver='lbfgs', multi_class='multinomial')
model = make_pipeline(pca, scaler, model)
model.fit(X_train, y_train)

assert model.predict([x_orig]) == 2

x_cf, y_cf, delta = generate_counterfactual(model, x_orig, 0, features_whitelist=None, optimizer="mp", regularization=None, return_as_dict=False)
assert y_cf == 0
assert model.predict(np.array([x_cf])) == 0

x_cf, y_cf, delta = generate_counterfactual(model, x_orig, 0, features_whitelist=None, optimizer="mp", regularization="l1", return_as_dict=False)
assert y_cf == 0
assert model.predict(np.array([x_cf])) == 0


def test_pipeline_robustscaler_softmaxregression():
# Load data
Expand Down Expand Up @@ -243,6 +276,23 @@ def test_pipeline_minmaxscaler_softmaxregression():
# Compute counterfactual
compute_counterfactuals_2(model, x_orig, 0)

x_cf, y_cf, delta = generate_counterfactual(model, x_orig, 0, features_whitelist=None, optimizer="mp", regularization=None, return_as_dict=False)
assert y_cf == 0
assert model.predict(np.array([x_cf])) == 0

x_cf, y_cf, delta = generate_counterfactual(model, x_orig, 0, features_whitelist=None, optimizer="mp", regularization="l1", return_as_dict=False)
assert y_cf == 0
assert model.predict(np.array([x_cf])) == 0

features_whitelist = [0, 1, 2]
x_cf, y_cf, delta = generate_counterfactual(model, x_orig, 0, features_whitelist=features_whitelist, optimizer="mp", regularization=None, return_as_dict=False)
assert y_cf == 0
assert model.predict(np.array([x_cf])) == 0

x_cf, y_cf, delta = generate_counterfactual(model, x_orig, 0, features_whitelist=features_whitelist, optimizer="mp", regularization="l1", return_as_dict=False)
assert y_cf == 0
assert model.predict(np.array([x_cf])) == 0


def test_pipeline_normalizer_softmaxregression():
# Load data
Expand Down Expand Up @@ -332,4 +382,12 @@ def test_pipeline_pca_linearregression():

x_cf, y_cf, _ = generate_counterfactual(model, x_orig, y_target=y_target, done=y_target_done, regularization="l1", C=0.1, features_whitelist=None, optimizer="bfgs", return_as_dict=False)
assert y_target_done(y_cf)
assert y_target_done(model.predict(np.array([x_cf])))

x_cf, y_cf, _ = generate_counterfactual(model, x_orig, y_target=y_target, done=y_target_done, regularization="l1", features_whitelist=None, optimizer="mp", return_as_dict=False)
assert y_target_done(y_cf)
assert y_target_done(model.predict(np.array([x_cf])))

x_cf, y_cf, _ = generate_counterfactual(model, x_orig, y_target=y_target, done=y_target_done, regularization="l2", features_whitelist=None, optimizer="mp", return_as_dict=False)
assert y_target_done(y_cf)
assert y_target_done(model.predict(np.array([x_cf])))

0 comments on commit b6bce97

Please sign in to comment.