联邦预处理

更新时间:

本文介绍了联邦预处理场景中的 API 及示例。

重要

本文涉及 API 中所有的占位符,例如 "$df0",必须包含单引号或双引号。

缺失值填充

函数路径

fascia.biz.preprocessing.fillna

函数定义

def fillna(fed_df: HDataFrame, columns: List[str] = None,
           value=None, strategy=None) -> Tuple[HDataFrame, FillingRule]:

请求参数

参数

类型

描述

fed_df

HDataFrame

待处理的联邦表

columns

List

要进行填充的列。如果为 None,则默认对所有列进行填充。默认为 None。

value

Scalar/Dict

指定要填充的值。默认为 None。

strategy

String

支持 mean、min 和 max 三种取值。若已经指定 value 参数,则忽略填充策略。若没有指定 value 参数,则必须指定填充策略。默认为 None。

返回值定义

返回内容为代码中用户指定输出的内容,通常是经过特征处理的联邦表和特征处理规则。

归一化

函数路径

fascia.biz.preprocessing.min_max_normal

函数定义

def min_max_normal(fed_df: HDataFrame, 
                   columns: List[str] = None,
                   min_max_scaler: MinMaxScaler = None) -> Tuple[HDataFrame, MinMaxNormalRule]:

请求参数

参数

类型

是否必选

描述

fed_df

HDataFrame

联邦表

columns

List

需要进行归一化处理的特征序列。

min_max_scaler

sklearn.preprocessing.MinMaxScaler

指定需要使用的 sklearn.preprocessing.MinMaxScaler。默认为 None。

返回值定义

返回内容为归一化后的联邦表和归一化规则。对特征做归一化处理后,最小值被线性映射到 0,最大值被线性映射到 1。如果最大值和最小值相同,则所有值都被映射到 0。

独热编码

函数路径

fascia.biz.preprocessing.onehot

函数定义

def onehot(fed_df: HDataFrame, 
           columns: List[str] = None,
           onehot_encoder: OneHotEncoder = None) -> Tuple[HDataFrame, OneHotRule]:

请求参数

参数

类型

是否必选

描述

fed_df

HDataFrame

联邦表

columns

List

需要进行归一化处理的特征序列。

onehot_encoder

sklearn.preprocessing.OneHotEncoder

指定需要使用的 sklearn.preprocessing.OneHotEncoder。默认为 None。

返回值定义

返回内容为独热编码后的联邦表和独热编码规则。在独热编码操作中,处理后的特征名格式为 <SOURCE>_<SEQUENCE>,其中 <SOURCE> 为源特征,<SEQUENCE> 为序号。

标签编码

标签编码操作是按照值顺序,将标签编码成类似 0,1,2,......的数值。

函数路径

fascia.biz.preprocessing.encode_label

函数定义

def encode_label(fed_df: HDataFrame, 
                 label: str, 
                 new_label: str, 
                 remove_label: bool = True,
                 label_encoder: LabelEncoder = None) -> Tuple[HDataFrame, LabelEncodingRule]

请求参数

参数

类型

是否必选

描述

fed_df

HDataFrame

联邦表

label

String

需要进行编码的标签名

new_label

String

生成的新编码标签名

remove_label

Bool

返回结果是否删除待编码的标签。默认为 True。

label_encoder

sklearn.preprocessing.LabelEncoder

指定需要使用的 sklearn.preprocessing.LabelEncoder。默认为 None。

返回值定义

返回内容为标签编码后的联邦表和标签编码规则。

离散化

离散化是对特征进行离散化处理,目前仅支持等宽分桶。

函数路径

fascia.biz.preprocessing.discretize

函数定义

def discretize(fed_df: HDataFrame, 
               columns: List[str] = None,
               n_bins=5, 
               strategy='uniform', 
               discretizer: KBinsDiscretizer=None) -> Tuple[HDataFrame, DiscretizationRule]:

请求参数

参数

类型

是否必选

描述

fed_df

HDataFrame

联邦表

columns

List

需要进行离散化处理的特征序列。默认为 None。

n_bins

Integer

分桶数目。默认为 5。

strategy

String

分桶策略。目前仅支持 uniform 策略,即等宽分桶。默认为 uniform。

discretizer

sklearn.preprocessing.KBinsDiscretizer

指定需要使用的 sklearn.preprocessing.KBinsDiscretizer。默认为 None。

返回值定义

返回内容为离散化处理后的联邦表和离散化规则。

DRGs 文本预处理

函数路径

fascia.biz.preprocessing.drgs_text_prerocessing

函数定义

def drgs_text_prerocessing(
        fed_df: HDataFrame,
        columns: List[str],
        tokenizer: FedTokenizer = None,
        unbroken_tokenizer: FedTokenizer = None) -> Tuple[HDataFrame, DrgsTextRule]:

请求参数

参数

类型

是否必选

描述

fed_df

HDataFrame

联邦表

columns

List

需要进行离散化处理的特征序列。

tokenizer

tensorflow.keras.preprocessing.text.Tokenizer

指定 tokenizer。默认为 None。

unbroken_tokenizer

tensorflow.keras.preprocessing.text.Tokenizer

指定整词处理的 tokenizer。默认为 None。

返回值定义

返回内容为文本预处理之后的联邦表和文本处理规则。处理后的特征名格式为 text_preprocess_<SEQUENCE>,其中 <SEQUENCE> 为序号。

保存预处理规则信息

函数路径

fascia.biz.api.preprocessing.save_preprocessing_rule

函数定义

def save_preprocessing_rule(
        rules: List[PreprocessingRule],
        uid: str, 
        parties: List[Union[str, Party]],
        file_uri: Union[str, Dict] = None):

请求参数

参数

类型

是否必选

描述

rules

List

预处理规则表

uid

String

用来保存生成的预处理信息,可以通过载入此信息后进行相同的预处理操作的应用。

parties

List

关联指定参与方和预处理信息绑定。该信息通常可以从返回的联邦表属性中获取。

file_uri

String/Dict

是否要指定保存的文件路径,格式为 <ID: PATH>,ID 为参与方 ID,Path 为文件路径。文件路径应为绝对路径。若为 None,则将使用 /home/admin/agent/data/dataset/feddataframe/<UID>.csv 作为默认路径。默认为 None。

加载预处理规则

函数路径

fascia.biz.api.preprocessing.load_preprocessing_rule

函数定义

def load_preprocessing_rule(rule_desc) -> List[PreprocessingRule]:

请求参数

rule_desc:保存预处理信息后得到的预处理规则,对应输入配置里的预处理规则占位符。

返回值定义

返回内容为预处理规则列表。

应用预处理规则

应用预处理规则是对联邦表按照预处理信息进行预处理。

函数路径

fascia.biz.api.preprocessing.apply_preprocessing_rule

函数定义

def apply_preprocessing_rule(fed_df: HDataFrame, 
                             rules: List[PreprocessingRule]) -> HDataFrame:

请求参数

参数

类型

是否必选

描述

fed_df

HDataFrame

联邦表

rules

List

读取预处理规则得到的规则列表

返回值定义

在返回内容为预处理后的联邦表。

预处理示例

以下是联邦表预处理示例。

from fascia.biz.api.dataframe import read_fed_table, save_fed_dataframe
from fascia.biz.api.preprocessing import save_preprocessing_rule
from fascia.biz.preprocessing import (
    fillna,
    min_max_normal,
    encode_label,
)

# 读取联邦表
fed_df0 = read_fed_table('$df0')

# 预处理
fed_df1, filling_rule = fillna(fed_df0, columns=['sepal_length', 'sepal_width', 'petal_length', 'petal_width'], strategy='mean')
fed_df2, normal_rule = min_max_normal(fed_df1, columns=['sepal_length', 'sepal_width', 'petal_length', 'petal_width'])
fed_df3, label_rule = encode_label(fed_df2, label='class', new_label='label')

# 存储预处理后的联邦表
save_fed_dataframe(fed_df3, '$output0')

# 预处理规则保存
save_preprocessing_rule([filling_rule, normal_rule, label_rule], '$rule_id', fed_df3.parties)

预处理规则应用示例

以下是联邦表预处理规则应用示例。

from fascia.biz.api.dataframe import read_fed_table, save_fed_dataframe
from fascia.biz.api.preprocessing import (
    load_preprocessing_rule,
    apply_preprocessing_rule,
    )

#加载预处理规则
rules = load_preprocessing_rule('$rule')

#执行预处理
fed_df = read_fed_table('$df0')
applied_df = apply_preprocessing_rule(fed_df, rules)
save_fed_dataframe(applied_df, '$output0')