Created
February 21, 2021 19:10
-
-
Save eugeneyan/fae574f8defb5f0f3d93898dec2715d0 to your computer and use it in GitHub Desktop.
Test invariance
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@pytest.fixture | |
def dummy_passengers(): | |
# Based on passenger 2 (high passenger class female) | |
passenger2 = {'PassengerId': 2, | |
'Pclass': 1, | |
'Name': ' Mrs. John', | |
'Sex': 'female', | |
'Age': 38.0, | |
'SibSp': 1, | |
'Parch': 0, | |
'Ticket': 'PC 17599', | |
'Fare': 71.2833, | |
'Embarked': 'C'} | |
return passenger2 | |
def test_dt_invariance(dummy_titanic_dt, dummy_passengers): | |
model = dummy_titanic_dt | |
_, p2 = dummy_passengers | |
# Get original survival probability of passenger 2 | |
test_df = pd.DataFrame.from_dict([p2], orient='columns') | |
X, y = get_feats_and_labels(prep_df(test_df)) | |
p2_prob = model.predict(X)[0] # 1.0 | |
# Change name from John to Berns (without changing gender or title) | |
p2_name = p2.copy() | |
p2_name['Name'] = ' Mrs. Berns' | |
test_df = pd.DataFrame.from_dict([p2_name], orient='columns') | |
X, y = get_feats_and_labels(prep_df(test_df)) | |
p2_name_prob = model.predict(X)[0] # 1.0 | |
# Change ticket number from 'PC 17599' to 'A/5 21171' | |
p2_ticket = p2.copy() | |
p2_ticket['ticket'] = 'A/5 21171' | |
test_df = pd.DataFrame.from_dict([p2_ticket], orient='columns') | |
X, y = get_feats_and_labels(prep_df(test_df)) | |
p2_ticket_prob = model.predict(X)[0] # 1.0 | |
assert p2_prob == p2_name_prob == p2_ticket_prob |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment