Model assertions - Consistency example(Python)

Loading...
%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']
)
df
Out[2]:
# The prediction function here simply returns the predicted values
# This would normally call a deep learning serving method
 
def prediction_function(df):
    return df[['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]: