將數(shù)據(jù)集中的features 劃分為數(shù)值型和object型
因?yàn)閜andas 只有 object 型 和int float數(shù)值型
(1)創(chuàng)建處理管道(processing pipeline)
對(duì)數(shù)據(jù)進(jìn)行預(yù)處理
num_transformer = Pipeline(
? ? steps=[("imputer", SimpleImputer(strategy="median")), ("scaler", StandardScaler())]
)
cate_transformer = Pipeline(
? ? steps=[
? ? ? ? ("imputer", SimpleImputer(strategy="constant", fill_value="missing")),
? ? ? ? ("onehot", OneHotEncoder(handle_unknown="error", drop="first")),
? ? ]
)
SimpleImputer提供了填充缺失值的基本策略。缺失值可以用常量值或使用缺失值所在列的統(tǒng)計(jì)信息(平均值、中位數(shù)或最頻繁)進(jìn)行填充。上述填充的是中位數(shù)(median)
StandardScaler(),標(biāo)準(zhǔn)化,將數(shù)據(jù)集處理為均值為0,方差為一的數(shù)據(jù)
OneHotEncoder(獨(dú)熱編碼),這種表示方式將每一個(gè)分類特征變量的m個(gè)可能的取值轉(zhuǎn)變成m個(gè)二值特征,對(duì)于每一條數(shù)據(jù)這m個(gè)值中僅有一個(gè)特征值為1,其他的都為0。
transformations = ColumnTransformer(
? ? transformers=[
? ? ? ? ("num", numeric_transformer, numerical),
? ? ? ? ("cat", categorical_transformer, categorical),
? ? ]
)
ColumnTransformer()在Python的機(jī)器學(xué)習(xí)庫scikit-learn中,可以選擇地進(jìn)行數(shù)據(jù)轉(zhuǎn)換。例如,它允許將特定的轉(zhuǎn)換或轉(zhuǎn)換序列僅應(yīng)用于數(shù)字列,而將單獨(dú)的轉(zhuǎn)換序列僅應(yīng)用于類別列。
(2)預(yù)測(cè)管道
clf = Pipeline(
? ? steps=[("preprocessor", transformations), ("classifier", LGBMClassifier())]
)