Skip to content

Commit 65aed50

Browse files
committed
check the model type classfy or regression
1 parent 1f3f000 commit 65aed50

File tree

1 file changed

+16
-18
lines changed

1 file changed

+16
-18
lines changed

explain.py

Lines changed: 16 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
from calculate_shap import *
1818
from analytics import Analytics
1919

20+
2021
class 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

Comments
 (0)