Естественно, я видел коды, которые используют разные подходы для выполнения одной и той же задачи (что-то вроде философии Perl, но ладно). Я не могу уловить разницу между ними. Я прочитал документацию SHAP, но не смог понять правильный подход.
Я видел и то, и другое:
- explainer = shap.Explainer(clf)
- explainer = shap.Explainer (clf.predict, X train)
- explainer(X)
- explainer(X_test)
- explainer.shap_values(X_test) — Это единственное, в чем я понимаю разницу. Он возвращает массив numpy вместо объекта объяснения формы.
На пути к науке о данных:
X_train, X_test, y_train, y_test = train_test_split(X, y)
clf.fit(X_train, y_train)
explainer = shap.Explainer(clf.predict, X_test)
shap_values = explainer(X_test)
На официальной странице SHAP на GitHub (которая не является их документацией)
explainer = shap.Explainer(clf)
shap_values = explainer(X)
Гики для гиков и датакемп
X_train, X_test, y_train, y_test = train_test_split(X, y)
clf.fit(X_train, y_train)
explainer = shap.Explainer(clf)
shap_values = explainer(X_test)
Подробнее здесь: https://stackoverflow.com/questions/786 ... er-or-clas