#!/usr/bin/env python # coding: utf-8 # In[1]: from sklearn.datasets import load_breast_cancer bc = load_breast_cancer() # In[2]: import pandas as pd bc_df = pd.DataFrame(bc.data, columns=bc.feature_names) bc_df.head() # In[3]: from sklearn.model_selection import train_test_split X_train, X_test, Y_train, Y_test = train_test_split(bc_df, bc.target, test_size = 0.2, random_state = 31) print(X_train.shape) print(Y_train.shape) print(X_test.shape) print(Y_test.shape) # In[4]: from aix360.algorithms.rbm import FeatureBinarizer fb = FeatureBinarizer(negations=True) X_train_fb = fb.fit_transform(X_train) X_test_fb = fb.transform(X_test) X_train_fb['mean radius'][:8] # In[5]: from aix360.algorithms.rbm import GLRMExplainer, LogisticRuleRegression # In[6]: logistic_model = LogisticRuleRegression(maxSolverIter=2000) explainer = GLRMExplainer(logistic_model) explainer.fit(X_train_fb, Y_train) # In[7]: Y_pred = explainer.predict(X_test_fb) # In[8]: from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score print(f'Accuracy = {accuracy_score(Y_test, Y_pred)}') print(f'Precision = {precision_score(Y_test, Y_pred, average="macro")}') print(f'Recall = {recall_score(Y_test, Y_pred, average="macro")}') print(f'F1 = {f1_score(Y_test, Y_pred, average="macro")}') # In[9]: explainer.explain() # In[10]: get_ipython().run_line_magic('matplotlib', 'inline') fb = FeatureBinarizer(negations=True) figs, _ = explainer.visualize(bc_df, fb) # In[ ]: