def get_segments_for_xgbr(model, derived_col_names, feature_names, target_name, mining_imp_val,categorical_values): """ It returns all the Segments element of the model Parameters ---------- model : Contains Xgboost model object. derived_col_names : List Contains column names after preprocessing. feature_names : List Contains list of feature/column names. target_name : List Name of the Target column. mining_imp_val : tuple Contains the mining_attributes,mining_strategy, mining_impute_value categoric_values : tuple Contains Categorical attribute names and its values Returns ------- segment : Get the Segmentation element which contains inner segments. """ segments = list() get_nodes_in_json_format = [] for i in range(model.n_estimators): get_nodes_in_json_format.append(json.loads(model._Booster.get_dump(dump_format='json')[i])) segmentation = pml.Segmentation(multipleModelMethod="sum", Segment=generate_Segments_Equal_To_Estimators(get_nodes_in_json_format, derived_col_names, feature_names)) return segmentation
def add_segmentation(model,segments_equal_to_estimators,mining_schema_for_1st_segment,out,id): """ It returns the First Segments for a binary classifier and returns number of Segments equls to number of values target class for multiclass classifier Parameters ---------- model: Contains Xgboost model object. segments_equal_to_estimators: List Contains List Segements equals to the number of the estimators of the model. mining_schema_for_1st_segment: Contains Mining Schema for the First Segment out: Contains the Output element id: Integer Index of the Segements Returns: ------- segments_equal_to_estimators: Returns list of segments equal to number of estimator of the model """ segmentation = pml.Segmentation(multipleModelMethod="sum", Segment=segments_equal_to_estimators) mining_model = pml.MiningModel(functionName='regression', modelName="MiningModel", MiningSchema=mining_schema_for_1st_segment, Output=out, Segmentation=segmentation) if model.n_classes_==2: First_segment = pml.Segment(True_=pml.True_(), id=id, MiningModel=mining_model) return First_segment else: segments_equal_to_class = pml.Segment(True_=pml.True_(), id=id + 1, MiningModel=mining_model) return segments_equal_to_class
def get_outer_segmentation(model, derived_col_names, col_names, target_name, mining_imp_val,categoric_values): """ It returns the Segmentation element of the model. Parameters ---------- model : Contains Xgboost model object. derived_col_names : List Contains column names after preprocessing. col_names : List Contains list of feature/column names. target_name : String Name of the Target column. mining_imp_val : tuple Contains the mining_attributes,mining_strategy, mining_impute_value categoric_values : tuple Contains Categorical attribute names and its values Returns ------- segmentation : Get the outer most Segmentation of an xgboost model """ if 'XGBRegressor' in str(model.__class__): segmentation=get_segments(model, derived_col_names, col_names, target_name, mining_imp_val,categoric_values) else: segmentation = pml.Segmentation( multipleModelMethod=get_multiple_model_method(model), Segment=get_segments(model, derived_col_names, col_names, target_name, mining_imp_val,categoric_values) ) return segmentation