0

I have saved & loaded a simple XGBClassifier(random_sate = 100) model, trained on Heart Disease prediction dataset(target variable mapped to 0s & 1s). I am trying to create a dtreeviz plot for the same:

from dtreeviz.trees import *
viz = dtreeviz(loaded_model, X_train, y_train, tree_index = 10,feature_names = X_train.columns,
      class_names = ['Absence', 'Presence'], target_name = 'Heart Disease')
viz.view()

However, I am getting the following error:

---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-18-2a3024516ed1> in <module>
  1 from dtreeviz.trees import *
  ----> 2 viz = dtreeviz(loaded_model, X_train, y_train, tree_index = 10, feature_names = X_train.columns,
  3               class_names = ['Absence', 'Presence'], target_name = 'Heart Disease')
  4 viz.view()

~\anaconda3\lib\site-packages\dtreeviz\trees.py in dtreeviz(tree_model, x_data, y_data, feature_names, target_name, class_names, tree_index, precision, orientation, instance_orientation, show_root_edge_labels, show_node_labels, show_just_path, fancy, histtype, highlight_path, X, max_X_features_LR, max_X_features_TD, depth_range_to_display, label_fontsize, ticks_fontsize, fontname, title, title_fontsize, colors, cmap, scale)
816     if shadow_tree.is_classifier():
817         nbins = get_num_bins(histtype, n_classes)
--> 818         node_heights = shadow_tree.get_split_node_heights(X_data, y_data, nbins=nbins)
819 
820     internal = []

~\anaconda3\lib\site-packages\dtreeviz\models\shadow_decision_tree.py in get_split_node_heights(self, X_train, y_train, nbins)
273         for node in self.internal:
274             # print(node.feature_name(), node.id)
--> 275             X_feature = X_train[:, node.feature()]
276             overall_feature_range = (np.min(X_feature), np.max(X_feature))
277             # print(f"range {overall_feature_range}")

~\anaconda3\lib\site-packages\dtreeviz\models\shadow_decision_tree.py in feature(self)
506         """Returns feature index used at this node"""
507 
--> 508         return self.shadow_tree.get_node_feature(self.id)
509 
510     def feature_name(self) -> (str, None):

~\anaconda3\lib\site-packages\dtreeviz\models\xgb_decision_tree.py in get_node_feature(self, id)
 76         feature_name = self._get_nodes_values("Feature")[id]
 77         try:
---> 78             return self.feature_names.index(feature_name)
 79         except ValueError as error:
 80             return self.__class__.NO_FEATURE

 AttributeError: 'Index' object has no attribute 'index'

I have been trying resolve this since yesterday, however, I can not find any solution.

Kindly help!

Thanks, Neel

0 Answers0