Skip to content

Commit

Permalink
sklearn: Extended and revised tests
Browse files Browse the repository at this point in the history
  • Loading branch information
andreArtelt committed May 8, 2020
1 parent 5794716 commit 9875d97
Show file tree
Hide file tree
Showing 4 changed files with 28 additions and 3 deletions.
4 changes: 4 additions & 0 deletions tests/sklearn/test_sklearn_linearregression.py
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,10 @@ def test_linearregression():
assert y_target_done(y_cf)
assert y_target_done(model.predict(np.array([x_cf])))

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

x_cf, y_cf, delta = generate_counterfactual(model, x_orig, y_target, done=y_target_done, features_whitelist=features_whitelist, regularization="l2", optimizer="mp", return_as_dict=False)
assert y_target_done(y_cf)
assert y_target_done(model.predict(np.array([x_cf])))
Expand Down
8 changes: 8 additions & 0 deletions tests/sklearn/test_sklearn_lvq.py
Original file line number Diff line number Diff line change
Expand Up @@ -179,6 +179,10 @@ def test_lgmlvq():
assert y_cf == 0
assert model.predict(np.array([x_cf])) == 0

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

x_cf, y_cf, delta = generate_counterfactual(model, x_orig, 0, features_whitelist=features_whitelist, regularization="l2", optimizer="mp", return_as_dict=False)
assert y_cf == 0
assert model.predict(np.array([x_cf])) == 0
Expand Down Expand Up @@ -245,6 +249,10 @@ def test_lgmlvq_classwise():
assert y_cf == 0
assert model.predict(np.array([x_cf])) == 0

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

x_cf, y_cf, delta = generate_counterfactual(model, x_orig, 0, features_whitelist=features_whitelist, regularization="l2", optimizer="mp", return_as_dict=False)
assert y_cf == 0
assert model.predict(np.array([x_cf])) == 0
Expand Down
11 changes: 8 additions & 3 deletions tests/sklearn/test_sklearn_naivebayes.py
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,10 @@ def test_gaussiannaivebayes():
assert y_cf == 0
assert model.predict(np.array([x_cf])) == 0

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

x_cf, y_cf, delta = generate_counterfactual(model, x_orig, 0, features_whitelist=features_whitelist, regularization="l2", optimizer="mp", return_as_dict=False)
assert y_cf == 0
assert model.predict(np.array([x_cf])) == 0
Expand Down Expand Up @@ -97,23 +101,24 @@ def test_gaussiannaivebayes():
model.fit(X_train, y_train)

x_orig = X_test[1:4][0,:]
print(model.predict_proba(np.array([x_orig])))
assert model.predict([x_orig]) == 0

features_whitelist = None

x_cf, y_cf, delta = generate_counterfactual(model, x_orig, y_target=1, features_whitelist=features_whitelist, optimizer="mp", return_as_dict=False)
assert y_cf == 1
print(model.predict_proba(np.array([x_cf])))
assert model.predict(np.array([x_cf])) == 1

cf = generate_counterfactual(model, x_orig, y_target=1, features_whitelist=features_whitelist, optimizer="mp", return_as_dict=True)
assert cf["y_cf"] == 1
assert model.predict(np.array([cf["x_cf"]])) == 1

x_orig = X_test[0,:]
print(model.predict_proba(np.array([x_orig])))
assert model.predict([x_orig]) == 1

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

# Other stuff
Expand Down
8 changes: 8 additions & 0 deletions tests/sklearn/test_sklearn_softmaxregression.py
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,10 @@ def test_softmaxregression():
assert y_cf == 0
assert model.predict(np.array([x_cf])) == 0

cf = generate_counterfactual(model, x_orig, 0, return_as_dict=True) # Compute counterfactual explanation
assert cf["y_cf"]== 0
assert model.predict(np.array([cf["x_cf"]])) == 0

# Multiclass classification problem
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33, random_state=4242)

Expand All @@ -85,6 +89,10 @@ def test_softmaxregression():
assert y_cf == 0
assert model.predict(np.array([x_cf])) == 0

cf = generate_counterfactual(model, x_orig, 0, return_as_dict=True)
assert cf["y_cf"] == 0
assert model.predict(np.array([cf["x_cf"]])) == 0

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

0 comments on commit 9875d97

Please sign in to comment.