Skip to content

Instantly share code, notes, and snippets.

@eugeneyan
Created February 21, 2021 19:10
Show Gist options
  • Save eugeneyan/fae574f8defb5f0f3d93898dec2715d0 to your computer and use it in GitHub Desktop.
Save eugeneyan/fae574f8defb5f0f3d93898dec2715d0 to your computer and use it in GitHub Desktop.
Test invariance
@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