聯邦預處理
本文介紹了聯邦預處理場景中的 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')