def get_param_obj(self): left_col_name_dict = self._generate_col_name_dict() cols = [str(i) for i in self.cols] host_obj = {} for host_name, host_left_cols in self.host_cols.items(): host_cols = list(map(str, host_left_cols.keys())) new_host_left_col = {str(k): v for k, v in host_left_cols.items()} host_left_col_obj = feature_selection_param_pb2.LeftCols( original_cols=host_cols, left_cols=new_host_left_col) for host_col, is_left in host_left_cols.items(): new_col_name = '.'.join([host_name, str(host_col)]) cols.append(new_col_name) left_col_name_dict[new_col_name] = is_left host_obj[host_name] = host_left_col_obj left_col_obj = feature_selection_param_pb2.LeftCols( original_cols=cols, left_cols=left_col_name_dict) host_value_objs = {} for host_name, host_feature_values in self.host_feature_values.items(): new_host_feature_values = { str(k): v for k, v in host_feature_values.items() } host_feature_value_obj = feature_selection_param_pb2.FeatureValue( feature_values=new_host_feature_values) host_value_objs[host_name] = host_feature_value_obj # Combine both guest and host results total_feature_values = {} for col_name, col_value in self.feature_values.items(): total_feature_values[col_name] = col_value for host_name, host_feature_values in self.host_feature_values.items(): for host_col, host_feature_value in host_feature_values.items(): new_col_name = '.'.join([host_name, str(host_col)]) total_feature_values[new_col_name] = host_feature_value result = feature_selection_param_pb2.FeatureSelectionFilterParam( feature_values=total_feature_values, host_feature_values=host_value_objs, left_cols=left_col_obj, host_left_cols=host_obj, filter_name='IV_PERCENTILE') json_result = json_format.MessageToJson( result, including_default_value_fields=True) LOGGER.debug("json_result: {}".format(json_result)) return result
def get_param_obj(self): left_col_name_dict = self._generate_col_name_dict() cols = [str(i) for i in self.cols] host_obj = {} for host_name, host_left_cols in self.host_cols.items(): host_cols = list(map(str, host_left_cols.keys())) new_host_left_col = {str(k): v for k, v in host_left_cols.items()} host_left_col_obj = feature_selection_param_pb2.LeftCols( original_cols=host_cols, left_cols=new_host_left_col) host_obj[host_name] = host_left_col_obj for host_col, is_left in host_left_cols.items(): new_col_name = '.'.join([host_name, str(host_col)]) cols.append(new_col_name) left_col_name_dict[new_col_name] = is_left left_col_obj = feature_selection_param_pb2.LeftCols( original_cols=cols, left_cols=left_col_name_dict) host_value_objs = {} for host_name, host_feature_values in self.host_feature_values.items(): new_host_feature_values = { str(k): v for k, v in host_feature_values.items() } host_feature_value_obj = feature_selection_param_pb2.FeatureValue( feature_values=new_host_feature_values) host_value_objs[host_name] = host_feature_value_obj # Combine both guest and host results total_feature_values = {} for col_name, col_value in self.feature_values.items(): total_feature_values[col_name] = col_value for host_name, host_feature_values in self.host_feature_values.items(): for host_col, host_feature_value in host_feature_values.items(): new_col_name = '.'.join([host_name, str(host_col)]) total_feature_values[new_col_name] = host_feature_value result = feature_selection_param_pb2.FeatureSelectionFilterParam( feature_values=total_feature_values, host_feature_values=host_value_objs, left_cols=left_col_obj, host_left_cols=host_obj, filter_name="IV_VALUE_FILTER") return result
def _received_result_cols(self, filter_name): result_cols_id = self.transfer_variable.generate_transferid( self.transfer_variable.result_left_cols, filter_name) left_cols = federation.get( name=self.transfer_variable.result_left_cols.name, tag=result_cols_id, idx=0) LOGGER.info( "Received left columns from guest, received left_cols: {}".format( left_cols)) # self.left_cols = left_cols LOGGER.debug("Before renew: self.left_cols: {}".format(self.left_cols)) self._renew_final_left_cols(left_cols) LOGGER.debug("After renew: self.left_cols: {}".format(self.left_cols)) # self._renew_left_col_names() host_cols = list(left_cols.keys()) left_col_result = {} original_cols = [] for col_idx, is_left in self.left_cols.items(): col_name = self.header[col_idx] left_col_result[col_name] = is_left for col_idx in host_cols: original_cols.append(self.header[col_idx]) left_col_obj = feature_selection_param_pb2.LeftCols( original_cols=original_cols, left_cols=left_col_result) result_obj = feature_selection_param_pb2.FeatureSelectionFilterParam( feature_values={}, left_cols=left_col_obj, filter_name=filter_name) self.results.append(result_obj) LOGGER.info("Received Left cols are {}".format(self.left_cols))
def get_param_obj(self): left_col_obj = feature_selection_param_pb2.LeftCols( original_cols=self.cols, left_cols=self.left_cols) result = feature_selection_param_pb2.FeatureSelectionFilterParam( feature_values=self.feature_values, left_cols=left_col_obj, filter_name=consts.OUTLIER_COLS) return result
def get_param_obj(self): left_col_obj = feature_selection_param_pb2.LeftCols( original_cols=self.cols, left_cols=self.left_cols) result = feature_selection_param_pb2.FeatureSelectionFilterParam( feature_values=self.feature_values, left_cols=left_col_obj, filter_name=consts.COEFFICIENT_OF_VARIATION_VALUE_THRES) return result
def get_param_obj(self): left_col_name_dict = self._generate_col_name_dict() cols = [str(i) for i in self.cols] left_col_obj = feature_selection_param_pb2.LeftCols( original_cols=cols, left_cols=left_col_name_dict) result = feature_selection_param_pb2.FeatureSelectionFilterParam( feature_values=self.feature_values, left_cols=left_col_obj, filter_name="UNIQUE FILTER") return result
def get_param_obj(self): left_col_obj = feature_selection_param_pb2.LeftCols( original_cols=self.cols, left_cols=self.left_cols) host_obj = {} for host_name, host_left_cols in self.host_cols.items(): host_cols = list(host_left_cols.keys()) left_col_obj = feature_selection_param_pb2.LeftCols( original_cols=host_cols, left_cols=host_left_cols) host_obj[host_name] = left_col_obj host_value_objs = {} for host_name, host_feature_values in self.host_feature_values.items(): host_feature_value_obj = feature_selection_param_pb2.FeatureValue( feature_values=host_feature_values) host_value_objs[host_name] = host_feature_value_obj result = feature_selection_param_pb2.FeatureSelectionFilterParam( feature_values=self.feature_values, host_feature_values=host_value_objs, left_cols=left_col_obj, host_left_cols=host_obj, filter_name=consts.IV_PERCENTILE) return result
def save_model(self, name, namespace): meta_buffer_type = self._save_meta(name, namespace) left_col_obj = feature_selection_param_pb2.LeftCols( original_cols=self.cols, left_cols=self.left_cols) result_obj = feature_selection_param_pb2.FeatureSelectionParam( results=self.results, final_left_cols=left_col_obj) param_buffer_type = "HeteroFeatureSelection{}.param".format( self.party_name) model_manager.save_model(buffer_type=param_buffer_type, proto_buffer=result_obj, name=name, namespace=namespace) return [(meta_buffer_type, param_buffer_type)]
def _get_param(self): left_col_name_dict = {} LOGGER.debug("in _get_param, self.left_cols: {}, self.original_header: {}".format( self.left_cols, self.original_header )) for col_idx, is_left in self.left_cols.items(): col_name = self.original_header[col_idx] left_col_name_dict[col_name] = is_left left_col_obj = feature_selection_param_pb2.LeftCols(original_cols=self.header, left_cols=left_col_name_dict) result_obj = feature_selection_param_pb2.FeatureSelectionParam(results=self.results, final_left_cols=left_col_obj) json_result = json_format.MessageToJson(result_obj) LOGGER.debug("json_result: {}".format(json_result)) return result_obj
def _received_result_cols(self, filter_name): result_cols_id = self.transfer_variable.generate_transferid(self.transfer_variable.result_left_cols, filter_name) left_cols = federation.get(name=self.transfer_variable.result_left_cols.name, tag=result_cols_id, idx=0) LOGGER.info("Received left columns from guest") self.left_cols = left_cols self._renew_left_col_names() host_cols = list(left_cols.keys()) left_col_obj = feature_selection_param_pb2.LeftCols(original_cols=host_cols, left_cols=self.left_cols) result_obj = feature_selection_param_pb2.FeatureSelectionFilterParam(feature_values={}, left_cols=left_col_obj, filter_name=filter_name) self.results.append(result_obj) LOGGER.info("Received Left cols are {}".format(self.left_cols))