联邦预处理
本文介绍了联邦预处理场景中的 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 | 否 | 指定需要使用的 |
返回值定义
返回内容为归一化后的联邦表和归一化规则。对特征做归一化处理后,最小值被线性映射到 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 | 否 | 指定需要使用的 |
返回值定义
返回内容为独热编码后的联邦表和独热编码规则。在独热编码操作中,处理后的特征名格式为 <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 | 否 | 指定需要使用的 |
返回值定义
返回内容为标签编码后的联邦表和标签编码规则。
离散化
离散化是对特征进行离散化处理,目前仅支持等宽分桶。
函数路径
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 | 否 | 指定需要使用的 |
返回值定义
返回内容为离散化处理后的联邦表和离散化规则。
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 | 否 | 是否要指定保存的文件路径,格式为 |
加载预处理规则
函数路径
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')