def test_compute__multiple_df_set_names(global_mock_summary_df,
                                            global_mock_aggregate_summary_dfs):
        inspector = InspectorShap(model=MockModel(),
                                  algotype='kmeans',
                                  cluster_probability=False)
        inspector.hasmultiple_dfs = True
        inspector.set_names = ['suf1', 'suf2']

        report_value = global_mock_summary_df
        inspector.agg_summary_dfs = global_mock_aggregate_summary_dfs

        expected_result = pd.DataFrame([[1, 2, 3, 2], [2, 3, 3, 3]],
                                       columns=[
                                           'cluster_id', 'column_a',
                                           'column_a_suf1', 'column_a_suf2'
                                       ])

        def mock_compute_report(self):
            self.agg_summary_df = report_value

        with patch.object(InspectorShap, '_compute_report',
                          mock_compute_report):
            output = inspector.compute()

        # Check output and side effects
        pd.testing.assert_frame_equal(output, expected_result)
        pd.testing.assert_frame_equal(inspector.cluster_report,
                                      expected_result)
        pd.testing.assert_frame_equal(inspector.agg_summary_df, report_value)
Пример #2
0
    def test_compute__multiple_df(global_mock_summary_df,
                                  global_mock_aggregate_summary_dfs):
        inspector = InspectorShap(model=MockModel(),
                                  algotype="kmeans",
                                  cluster_probability=False)
        inspector.hasmultiple_dfs = True

        report_value = global_mock_summary_df
        inspector.agg_summary_dfs = global_mock_aggregate_summary_dfs

        expected_result = pd.DataFrame([[1, 2, 3, 2], [2, 3, 3, 3]],
                                       columns=[
                                           "cluster_id", "column_a",
                                           "column_a_sample_1",
                                           "column_a_sample_2"
                                       ])

        def mock_compute_report(self):
            self.agg_summary_df = report_value

        with patch.object(InspectorShap, "_compute_report",
                          mock_compute_report):
            output = inspector.compute()

        # Check output and side effects
        pd.testing.assert_frame_equal(output, expected_result)
        pd.testing.assert_frame_equal(inspector.cluster_report,
                                      expected_result)
        pd.testing.assert_frame_equal(inspector.agg_summary_df, report_value)