def test_single_row_random_forest(): import shap import numpy as np from sklearn.model_selection import train_test_split from sklearn.ensemble import RandomForestClassifier import sklearn X_train,X_test,Y_train,_ = train_test_split(*shap.datasets.adult(), test_size=0.2, random_state=0) clf = RandomForestClassifier(random_state=202, n_estimators=10, max_depth=10) clf.fit(X_train, Y_train) predicted = clf.predict_proba(X_test) ex = shap.TreeExplainer(clf) shap_values = ex.shap_values(X_test.iloc[0,:]) assert np.abs(shap_values[0].sum() + ex.expected_value[0] - predicted[0,0]) < 1e-4, \ "SHAP values don't sum to model output!"