def setUp(self): X_train, y_train, X_test, y_test = titanic_survive() train_names, test_names = titanic_names() _, self.names = titanic_names() model = RandomForestClassifier(n_estimators=5, max_depth=2) model.fit(X_train, y_train) self.explainer = ClassifierExplainer( model, X_test, y_test, cats=['Sex', 'Deck', 'Embarked'], labels=['Not survived', 'Survived'])
def setUp(self): X_train, y_train, X_test, y_test = titanic_fare() self.test_len = len(X_test) train_names, test_names = titanic_names() _, self.names = titanic_names() model = XGBRegressor() model.fit(X_train, y_train) self.explainer = RegressionExplainer(model, X_test, y_test, cats=[{'Gender': ['Sex_female', 'Sex_male', 'Sex_nan']}, 'Deck', 'Embarked'], units="$")
def setUp(self): X_train, y_train, X_test, y_test = titanic_fare() self.test_len = len(X_test) train_names, test_names = titanic_names() _, self.names = titanic_names() model = LGBMRegressor() model.fit(X_train, y_train) self.explainer = RegressionExplainer(model, X_test, y_test, r2_score, shap='tree', cats=['Sex', 'Deck', 'Embarked'], idxs=test_names, units="$")
def setUp(self): X_train, y_train, X_test, y_test = titanic_fare() self.test_len = len(X_test) train_names, test_names = titanic_names() _, self.names = titanic_names() model = CatBoostRegressor(iterations=5, learning_rate=0.1, verbose=0) model.fit(X_train, y_train) self.explainer = RegressionExplainer(model, X_test, y_test, cats=[{'Gender': ['Sex_female', 'Sex_male', 'Sex_nan']}, 'Deck', 'Embarked'], idxs=test_names, units="$")
def setUp(self): X_train, y_train, X_test, y_test = titanic_fare() self.test_len = len(X_test) train_names, test_names = titanic_names() _, self.names = titanic_names() model = CatBoostRegressor(iterations=100, learning_rate=0.1, verbose=0) model.fit(X_train, y_train) self.explainer = RegressionExplainer(model, X_test, y_test, r2_score, shap='tree', cats=['Sex', 'Deck', 'Embarked'], idxs=test_names, units="$")
def setUp(self): X_train, y_train, X_test, y_test = titanic_fare() self.test_len = len(X_test) train_names, test_names = titanic_names() _, self.names = titanic_names() model = RandomForestRegressor(n_estimators=5, max_depth=2).fit(X_train, y_train) self.explainer = RegressionExplainer( model, X_test, y_test, r2_score, cats=[{'Gender': ['Sex_female', 'Sex_male', 'Sex_nan']}, 'Deck', 'Embarked'], idxs=test_names, target='Fare', units='$')
def get_regression_explainer(xgboost=False, include_y=True): X_train, y_train, X_test, y_test = titanic_fare() train_names, test_names = titanic_names() if xgboost: model = XGBRegressor().fit(X_train, y_train) else: model = RandomForestRegressor(n_estimators=50, max_depth=10).fit(X_train, y_train) if include_y: reg_explainer = RegressionExplainer(model, X_test, y_test, cats=['Sex', 'Deck', 'Embarked'], idxs=test_names, units="$") else: reg_explainer = RegressionExplainer(model, X_test, cats=['Sex', 'Deck', 'Embarked'], idxs=test_names, units="$") reg_explainer.calculate_properties() return reg_explainer
def get_multiclass_explainer(xgboost=False, include_y=True): X_train, y_train, X_test, y_test = titanic_embarked() train_names, test_names = titanic_names() if xgboost: model = XGBClassifier().fit(X_train, y_train) else: model = RandomForestClassifier(n_estimators=50, max_depth=10).fit(X_train, y_train) if include_y: if xgboost: multi_explainer = ClassifierExplainer(model, X_test, y_test, model_output='logodds', cats=['Sex', 'Deck'], labels=['Queenstown', 'Southampton', 'Cherbourg']) else: multi_explainer = ClassifierExplainer(model, X_test, y_test, cats=['Sex', 'Deck'], labels=['Queenstown', 'Southampton', 'Cherbourg']) else: if xgboost: multi_explainer = ClassifierExplainer(model, X_test, model_output='logodds', cats=['Sex', 'Deck'], labels=['Queenstown', 'Southampton', 'Cherbourg']) else: multi_explainer = ClassifierExplainer(model, X_test, cats=['Sex', 'Deck'], labels=['Queenstown', 'Southampton', 'Cherbourg']) multi_explainer.calculate_properties() return multi_explainer
def setUp(self): X_train, y_train, X_test, y_test = titanic_survive() train_names, test_names = titanic_names() self.model = RandomForestClassifier(n_estimators=5, max_depth=2) self.model.fit(X_train, y_train) self.explainer = ClassifierExplainer( self.model, X_test, y_test, cats=[{'Gender': ['Sex_female', 'Sex_male', 'Sex_nan']}, 'Deck', 'Embarked'], labels=['Not survived', 'Survived']) self.dashboard = ExplainerDashboard(self.explainer, [ ShapDependenceTab(self.explainer, title="Test Tab!"), ShapDependenceTab, "importances" ], title="Test Title!") self.pkl_dir = Path.cwd() / "tests" / "cli_assets" self.explainer.dump(self.pkl_dir / "explainer.joblib") self.explainer.to_yaml(self.pkl_dir / "explainer.yaml") self.dashboard.to_yaml(self.pkl_dir / "dashboard.yaml", explainerfile=str(self.pkl_dir / "explainer.joblib"))
def setUp(self): X_train, y_train, X_test, y_test = titanic_fare() self.test_len = len(X_test) train_names, test_names = titanic_names() _, self.names = titanic_names() model = RandomForestRegressor(n_estimators=5, max_depth=2) model.fit(X_train, y_train) self.explainer = RegressionExplainer(model, X_test, y_test, r2_score, shap='tree', cats=['Sex', 'Cabin', 'Embarked'], idxs=test_names)
def setUp(self): X_train, y_train, X_test, y_test = titanic_survive() train_names, test_names = titanic_names() _, self.names = titanic_names() model = RandomForestClassifier(n_estimators=5, max_depth=2) model.fit(X_train, y_train) self.explainer = RandomForestClassifierExplainer( model, X_test, y_test, roc_auc_score, shap='tree', cats=['Sex', 'Cabin', 'Embarked'], idxs=test_names, labels=['Not survived', 'Survived'])
def setUp(self): X_train, y_train, X_test, y_test = titanic_survive() train_names, test_names = titanic_names() model = RandomForestClassifier(n_estimators=5, max_depth=2) model.fit(X_train, y_train) self.explainer = ClassifierExplainer( model, X_test, y_test, roc_auc_score, n_jobs=-1)
def setUp(self): X_train, y_train, X_test, y_test = titanic_fare() self.test_len = len(X_test) train_names, test_names = titanic_names() _, self.names = titanic_names() model = RandomForestRegressor(n_estimators=5, max_depth=2) model.fit(X_train, y_train) self.explainer = RegressionExplainer( model, X_test, y_test, cats=[{ 'Gender': ['Sex_female', 'Sex_male', 'Sex_nan'] }, 'Deck', 'Embarked'], cats_notencoded={'Gender': 'No Gender'}, idxs=test_names)
def setUp(self): X_train, y_train, X_test, y_test = titanic_fare() self.test_len = len(X_test) train_names, test_names = titanic_names() _, self.names = titanic_names() model = LinearRegression() model.fit(X_train, y_train) self.explainer = RegressionExplainer( model, X_test, y_test, r2_score, shap='linear', cats=[{ 'Gender': ['Sex_female', 'Sex_male', 'Sex_nan'] }, 'Deck', 'Embarked'], idxs=test_names, units="$")
def setUp(self): X_train, y_train, X_test, y_test = titanic_survive() train_names, test_names = titanic_names() model = XGBClassifier() model.fit(X_train, y_train) self.explainer = ClassifierExplainer( model, X_test, y_test, cats=[{'Gender': ['Sex_female', 'Sex_male', 'Sex_nan']}, 'Deck', 'Embarked'], labels=['Not survived', 'Survived'])
def setUp(self): X_train, y_train, X_test, y_test = titanic_embarked() train_names, test_names = titanic_names() model = RandomForestClassifier(n_estimators=5, max_depth=2) model.fit(X_train, y_train) self.explainer = ClassifierExplainer(model, X_test, y_test, cats=[{'Gender': ['Sex_female', 'Sex_male', 'Sex_nan']}, 'Deck'], idxs=test_names, labels=['Queenstown', 'Southampton', 'Cherbourg'])
def setUp(self): X_train, y_train, X_test, y_test = titanic_survive() train_names, test_names = titanic_names() model = LGBMClassifier() model.fit(X_train, y_train) self.explainer = ClassifierExplainer( model, X_test, y_test, roc_auc_score, shap='tree', cats=['Sex', 'Cabin', 'Embarked'], labels=['Not survived', 'Survived'], idxs=test_names)
def setUp(self): X_train, y_train, X_test, y_test = titanic_survive() train_names, test_names = titanic_names() model = CatBoostClassifier(iterations=100, learning_rate=0.1, verbose=0) model.fit(X_train, y_train) self.explainer = ClassifierExplainer( model, X_test, y_test, roc_auc_score, shap='tree', cats=['Sex', 'Cabin', 'Embarked'], labels=['Not survived', 'Survived'], idxs=test_names)
def setUp(self): X_train, y_train, X_test, y_test = titanic_survive() train_names, test_names = titanic_names() model = CatBoostClassifier(iterations=100, learning_rate=0.1, verbose=0) model.fit(X_train, y_train) self.explainer = ClassifierExplainer( model, X_test, y_test, cats=[{'Gender': ['Sex_female', 'Sex_male', 'Sex_nan']}, 'Deck', 'Embarked'], labels=['Not survived', 'Survived'], idxs=test_names)
def setUp(self): X_train, y_train, X_test, y_test = titanic_survive() train_names, test_names = titanic_names() model = LogisticRegression() model.fit(X_train, y_train) self.explainer = ClassifierExplainer( model, X_test, y_test, shap='linear', cats=['Sex', 'Deck', 'Embarked'], labels=['Not survived', 'Survived'], idxs=test_names)
def setUp(self): X_train, y_train, X_test, y_test = titanic_fare() train_names, test_names = titanic_names() model = XGBRegressor(n_estimators=5, max_depth=2) model.fit(X_train, y_train) self.explainer = RegressionExplainer( model, X_test, y_test, cats=[{ 'Gender': ['Sex_female', 'Sex_male', 'Sex_nan'] }, 'Deck', 'Embarked'], idxs=test_names)
def setUp(self): X_train, y_train, X_test, y_test = titanic_survive() train_names, test_names = titanic_names() model = RandomForestClassifier(n_estimators=5, max_depth=2) model.fit(X_train, y_train) self.explainer = ClassifierExplainer( model, X_test, y_test, cats=[{ 'Gender': ['Sex_female', 'Sex_male', 'Sex_nan'] }, 'Deck', 'Embarked'], target='Survival', labels=['Not survived', 'Survived'], idxs=test_names)
def get_catboost_classifier(): X_train, y_train, X_test, y_test = titanic_survive() train_names, test_names = titanic_names() model = CatBoostClassifier(iterations=100, verbose=0).fit(X_train, y_train) explainer = ClassifierExplainer( model, X_test, y_test, cats=[{'Gender': ['Sex_female', 'Sex_male', 'Sex_nan']}, 'Deck', 'Embarked'], labels=['Not survived', 'Survived'], idxs=test_names) X_cats, y_cats = explainer.X_merged, explainer.y.astype("int") model = CatBoostClassifier(iterations=5, verbose=0).fit(X_cats, y_cats, cat_features=[5, 6, 7]) explainer = ClassifierExplainer(model, X_cats, y_cats, idxs=X_test.index) explainer.calculate_properties(include_interactions=False) return explainer
def setUp(self): X_train, y_train, X_test, y_test = titanic_survive() train_names, test_names = titanic_names() model = LogisticRegression() model.fit(X_train, y_train) self.explainer = ClassifierExplainer( model, X_test.iloc[:20], y_test.iloc[:20], shap='kernel', model_output='probability', X_background=shap.sample(X_train, 5), cats=[{ 'Gender': ['Sex_female', 'Sex_male', 'Sex_nan'] }, 'Deck', 'Embarked'], labels=['Not survived', 'Survived'])
def get_classification_explainer(include_y=True): X_train, y_train, X_test, y_test = titanic_survive() train_names, test_names = titanic_names() model = XGBClassifier().fit(X_train, y_train) if include_y: explainer = ClassifierExplainer( model, X_test, y_test, cats=['Sex', 'Cabin', 'Embarked'], labels=['Not survived', 'Survived'], idxs=test_names) else: explainer = ClassifierExplainer( model, X_test, cats=['Sex', 'Cabin', 'Embarked'], labels=['Not survived', 'Survived'], idxs=test_names) explainer.calculate_properties() return explainer
def get_classification_explainer(xgboost=False, include_y=True): X_train, y_train, X_test, y_test = titanic_survive() train_names, test_names = titanic_names() if xgboost: model = XGBClassifier().fit(X_train, y_train) else: model = RandomForestClassifier(n_estimators=50, max_depth=10).fit(X_train, y_train) if include_y: explainer = ClassifierExplainer(model, X_test, y_test, cats=['Sex', 'Cabin', 'Embarked'], labels=['Not survived', 'Survived']) else: explainer = ClassifierExplainer(model, X_test, cats=['Sex', 'Cabin', 'Embarked'], labels=['Not survived', 'Survived']) explainer.calculate_properties() return explainer
def test_int_idx(self): self.assertEqual(self.explainer.get_idx(titanic_names()[1][0]), 0)