1717from calculate_shap import *
1818from analytics import Analytics
1919
20+
2021class explain ():
2122 def __init__ (self ):
2223 super (explain , self ).__init__ ()
@@ -35,7 +36,6 @@ def __init__(self):
3536 # if total_unique < 20:
3637 # is_classification = True
3738 # return is_classification
38-
3939
4040 def random_string_generator (self ):
4141 random_str = '' .join (random .choice (string .ascii_uppercase + string .digits ) for _ in range (10 ))
@@ -74,8 +74,7 @@ def ai_h2o_automl(self, df, y_column_name, model, model_name="h2o", mode=None):
7474 prediction_col = model .predict (df [y_column_name ])
7575 # is classification?
7676
77- is_classification = self .is_classification_given_y_array (prediction_col .as_data_frame ()[y_column_name ].tolist ())
78-
77+ is_classification = True if model .type == 'classifier' else False
7978 # shap
8079 c = calculate_shap ()
8180 self .df_final , self .explainer = c .find (model , df , prediction_col , is_classification ,
@@ -134,12 +133,11 @@ def ai_h2o_automl(self, df, y_column_name, model, model_name="h2o", mode=None):
134133
135134 return True
136135
137-
138136 def ai (self , df , y , model , model_name = "xgboost" , mode = None ):
139137 y_variable = "y_actual"
140138 y_variable_predict = "y_prediction"
141-
142- #Code for Analytics
139+
140+ # Code for Analytics
143141 instance_id = self .random_string_generator ()
144142 analytics = Analytics ()
145143 analytics ['ip' ] = analytics .finding_ip ()
@@ -172,38 +170,38 @@ def ai(self, df, y, model, model_name="xgboost", mode=None):
172170 prediction_col = model .predict (df )
173171
174172 # is classification?
175- #is_classification = self.is_classification_given_y_array(prediction_col)
173+ # is_classification = self.is_classification_given_y_array(prediction_col)
176174 ModelType = lambda model : True if is_classifier (model ) else False
177175 is_classification = ModelType (model )
178176
179177 # shap
180178 c = calculate_shap ()
181179 self .df_final , self .explainer = c .find (model , df , prediction_col , is_classification , model_name = model_name )
182180
183- #Append Model Decision & True Labels Columns into the dataset.
181+ # Append Model Decision & True Labels Columns into the dataset.
184182 self .df_final [y_variable_predict ] = prediction_col
185183 self .df_final [y_variable ] = y
186184
187185 # additional inputs.
188186 if is_classification == True :
189187 # find and add probabilities in the dataset.
190- #prediction_col_prob = model.predict_proba(df)
191- #pd_prediction_col_prob = pd.DataFrame(prediction_col_prob)
188+ # prediction_col_prob = model.predict_proba(df)
189+ # pd_prediction_col_prob = pd.DataFrame(prediction_col_prob)
192190
193191 probabilities = model .predict_proba (df )
194192
195193 for i in range (len (np .unique (prediction_col ))):
196- self .df_final ['Probability: {}' .format (np .unique (prediction_col )[i ])] = probabilities [:,i ]
197-
194+ self .df_final ['Probability: {}' .format (np .unique (prediction_col )[i ])] = probabilities [:, i ]
195+
198196 self .param ['classes' ] = np .unique (prediction_col )
199197
200- #for c in pd_prediction_col_prob.columns:
201- # self.df_final["probability_of_predicting_class_" + str(c)] = list(pd_prediction_col_prob[c])
198+ # for c in pd_prediction_col_prob.columns:
199+ # self.df_final["probability_of_predicting_class_" + str(c)] = list(pd_prediction_col_prob[c])
202200
203- #classes = []
204- #for c in pd_prediction_col_prob.columns:
205- # classes.append(str(c))
206- #self.param["classes"] = classes
201+ # classes = []
202+ # for c in pd_prediction_col_prob.columns:
203+ # classes.append(str(c))
204+ # self.param["classes"] = classes
207205
208206 try :
209207 expected_values_by_class = self .explainer .expected_value
0 commit comments