Dans ce PR , nous modifions les paramètres d'initialisation pour ENC afin de réussir les tests de shap (test_shap) dans le fichier test_algoritthms.py
. Laisser les paramètres d'initialisation à alpha = 0.0001
et l1_ratio=0.15
causé un ZeroDivisionError
lors du calcul de shap, ce qui est probablement lié à ce .
Déposer ce problème pour déterminer pourquoi le test échoue et trouver un bon moyen d'éviter cette erreur.
Je pense que c'est un problème de forme. J'ai déposé https://github.com/slundberg/shap/issues/2000 pour discussion. À court terme, je pense que nous pouvons faire ce qui suit :
KernelExplainer
pour les modèles linéairesexplainer = shap.LinearExplainer(classifier, X, link=shap.links.logit)
Un autre test qui a échoué :
Sur main, en utilisant alpha=0.5, l1_ratio=0.5
, ce que nous avons avant cela , si nous ajoutons ce test dans evalml/tests/model_understanding_tests/prediction_explaination_tests/test_explainers.py
:
@pytest.mark.parametrize("estimator", ["Extra Trees Classifier", "Elastic Net Classifier"])
def test_elastic_net(estimator, fraud_100):
pytest.importorskip('imblearn', reason='Skipping test because imblearn not installed')
X, y = fraud_100
pipeline = BinaryClassificationPipeline(component_graph=["Imputer", "One Hot Encoder", "DateTime Featurization Component", estimator])
pipeline.fit(X=X, y=y)
pipeline.predict(X)
importance = explain_predictions(pipeline, X, y, indices_to_explain=[0], top_k_features=4)
assert report['feature_names'].isnull().sum() == 0
assert report['feature_values'].isnull().sum() == 0
Le test échoue :
Si nous modifions l'alpha et le l1_ratio, cela échoue toujours.
Ok @bchen1116 , vas-y.
Clôture avec ce PR