def test_validate_contributions_1(self): """ Unit test validate contributions 1 """ xpl = SmartExplainer() contributions = [ np.array([[2, 1], [8, 4]]), np.array([[5, 5], [0, 0]]) ] model = Mock() model._classes = np.array([1, 3]) model.predict = types.MethodType(self.predict, model) model.predict_proba = types.MethodType(self.predict_proba, model) xpl.model = model xpl._case = "classification" xpl._classes = list(model._classes) xpl.state = xpl.choose_state(contributions) xpl.x_init = pd.DataFrame([[1, 2], [3, 4]], columns=['Col1', 'Col2'], index=['Id1', 'Id2']) expected_output = [ pd.DataFrame([[2, 1], [8, 4]], columns=['Col1', 'Col2'], index=['Id1', 'Id2']), pd.DataFrame([[5, 5], [0, 0]], columns=['Col1', 'Col2'], index=['Id1', 'Id2']) ] output = xpl.validate_contributions(contributions) assert len(expected_output) == len(output) test_list = [ pd.testing.assert_frame_equal(e, m) for e, m in zip(expected_output, output) ] assert all(x is None for x in test_list)
def test_check_label_dict_1(self): """ Unit test check label dict 1 """ xpl = SmartExplainer(label_dict={1: 'Yes', 0: 'No'}) xpl._classes = [0, 1] xpl._case = 'classification' xpl.check_label_dict()
def test_add_2(self): """ Unit test add 2 """ xpl = SmartExplainer() xpl._classes = [0, 1] xpl._case = "classification" xpl.add(label_dict={0: 'Zero', 1: 'One'}) assert xpl.label_dict[0] == 'Zero' assert xpl.label_dict[1] == 'One'
def test_check_label_name_5(self): """ Unit test check label name 5 """ label_dict = {1: 'Age', 2: 'Education'} xpl = SmartExplainer(label_dict=label_dict) xpl.inv_label_dict = {v: k for k, v in xpl.label_dict.items()} xpl._classes = [1, 2] label = 'Absent' expected_msg = f"Label (Absent) not found for origin (value)" origin = 'value' self.assertRaisesWithMessage(expected_msg, xpl.check_label_name, **{'label': label, 'origin': origin})
def test_check_label_name_2(self): """ Unit test check label name 2 """ xpl = SmartExplainer(label_dict = None) xpl._classes = [1, 2] entry = 1 expected_num = 0 expected_code = 1 expected_value = 1 label_num, label_code, label_value = xpl.check_label_name(entry, 'code') assert expected_num == label_num assert expected_code == label_code assert expected_value == label_value
def test_check_label_name_3(self): """ Unit test check label name 3 """ label_dict = {1: 'Age', 2: 'Education'} xpl = SmartExplainer(label_dict=label_dict) xpl.inv_label_dict = {v: k for k, v in xpl.label_dict.items()} xpl._classes = [1, 2] entry = 0 expected_num = 0 expected_code = 1 expected_value = 'Age' label_num, label_code, label_value = xpl.check_label_name(entry, 'num') assert expected_num == label_num assert expected_code == label_code assert expected_value == label_value