%pip install model_assertions
%pip install jinja2
Python interpreter will be restarted.
Collecting model_assertions
Downloading model_assertions-0.0.3.tar.gz (2.0 kB)
Building wheels for collected packages: model-assertions
Building wheel for model-assertions (setup.py): started
Building wheel for model-assertions (setup.py): finished with status 'done'
Created wheel for model-assertions: filename=model_assertions-0.0.3-py3-none-any.whl size=3453 sha256=140d940795fbeeb89bc16f25510d1832e4e662728832473d67b8da235a35a56d
Stored in directory: /root/.cache/pip/wheels/28/2f/b6/cc7d7573c85985ccbc1a63ca6b1518350677255221b659728d
Successfully built model-assertions
Installing collected packages: model-assertions
Successfully installed model-assertions-0.0.3
Python interpreter will be restarted.
Python interpreter will be restarted.
Requirement already satisfied: jinja2 in /local_disk0/.ephemeral_nfs/envs/pythonEnv-974bf97d-d63a-4985-aa4d-fb02bb999984/lib/python3.8/site-packages (2.11.2)
Requirement already satisfied: MarkupSafe>=0.23 in /local_disk0/.ephemeral_nfs/envs/pythonEnv-974bf97d-d63a-4985-aa4d-fb02bb999984/lib/python3.8/site-packages (from jinja2) (1.1.1)
Python interpreter will be restarted.
import pandas as pd
import seaborn as sns
import numpy as np
from model_assertions.checker import Checker
from model_assertions.consistency import IdentifierConsistencyAssertion, TimeConsistencyAssertion# In this example, we assume the data is generated from some deep learning method
# We'll assume the dataframe is already populated
df = pd.DataFrame(
[[0, 1, 'Christi Paul', 'Female', 'Black'],
[1, 1, 'Christi Paul', 'Female', 'Brown'],
[3, 1, 'Poppy Harlow', 'Female', 'Black'],
[4, 1, 'Christi Paul', 'Male', 'Black']],
columns=['frame', 'scene_idenfier', 'name', 'gender', 'hair_color']
)
# Define the assertions and register them
gender_consistency = IdentifierConsistencyAssertion('name', 'gender')
hair_color_consistency = IdentifierConsistencyAssertion('scene_idenfier', 'hair_color')
time_consistency = TimeConsistencyAssertion('scene_idenfier', 'frame')
checker = Checker(name='Consistency checker', verbose=False)
checker.register_assertion(gender_consistency.get_assertion(), gender_consistency.get_name())
checker.register_assertion(hair_color_consistency.get_assertion(), hair_color_consistency.get_name())
checker.register_assertion(time_consistency.get_assertion(), time_consistency.get_name())
# Run the prediction and check for errors
def styler(x):
cm = sns.color_palette('husl', 2)
colors = []
for color in cm:
color = (np.array(color) * 255).astype(int)
colors.append('background-color:' + f'rgb({color[0]},{color[1]},{color[2]})')
df1 = pd.DataFrame('', index=x.index, columns=x.columns)
df1.iloc[0, 3] = colors[0]
df1.iloc[1, 3] = colors[0]
df1.iloc[2, 4] = colors[0]
df1.iloc[3, 4] = colors[0]
df1.iloc[4, 0] = colors[1]
df1.iloc[5, 0] = colors[1]
return df1
pred_fn = checker.wrap(prediction_function)
outs = pred_fn(df)
df_err = checker.retrieve_errors()
df_err.style.apply(styler, axis=None)
Out[5]: