def test_predict_clusters__inspector_shap(mock_clusterer, global_small_df): mock_clusterer.predict.return_value = [1, 0] inspector = InspectorShap(model=MockModel(), algotype='kmeans', cluster_probability=False) inspector.clusterer = mock_clusterer inspector.fitted = True X = global_small_df # Check if the output is correct, as should be according to MockClusterer assert inspector.predict_clusters(X) == [1, 0] # Check if the df has not been modified by the prediction pd.testing.assert_frame_equal(X, global_small_df)
def test_predict_clusters__not_fitted(mock_clusterer, global_small_df): mock_clusterer.predict.return_value = [1, 0] # InspectorShap not fitted inspector = InspectorShap(model=MockModel(), algotype='kmeans', cluster_probability=True) inspector.clusterer = mock_clusterer inspector.predicted_proba = True X = global_small_df # Check if not fitted exception is raised with pytest.raises(NotFittedError): inspector.predict_clusters(X) # Check if X3 has not been modified pd.testing.assert_frame_equal(X, global_small_df)
def test_fit_clusters__inspector_shap(mock_clusterer, global_small_df): inspector = InspectorShap(model=MockModel(), algotype='kmeans', cluster_probability=False) inspector.clusterer = mock_clusterer X = global_small_df inspector.fit_clusters(X) # Check if has been called with correct argument mock_clusterer.fit.assert_called_once() pd.testing.assert_frame_equal(mock_clusterer.fit.call_args[0][0], X) # Check if it has not been modified pd.testing.assert_frame_equal(X, global_small_df) # Check if fitted flag has been changed correctly assert inspector.fitted is True
def test_fit_clusters__inspector_shap_proba(mock_clusterer, global_small_df): inspector = InspectorShap(model=MockModel(), algotype='kmeans', cluster_probability=True) inspector.clusterer = mock_clusterer inspector.predicted_proba = True X = global_small_df #Check if not fitted exception is raised inspector.fit_clusters(X) # Check if column with probabilities has been added to the fitted X assert 'probs' in mock_clusterer.fit.call_args[0][0].columns # Check if has been called mock_clusterer.fit.assert_called_once() # Check if X has not been modified pd.testing.assert_frame_equal(X, global_small_df) assert inspector.fitted is True