将数据集中的features 划分为数值型和object型
因为pandas 只有 object 型 和int float数值型
(1)创建处理管道(processing pipeline)
对数据进行预处理
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提供了填充缺失值的基本策略。缺失值可以用常量值或使用缺失值所在列的统计信息(平均值、中位数或最频繁)进行填充。上述填充的是中位数(median)
StandardScaler(),标准化,将数据集处理为均值为0,方差为一的数据
OneHotEncoder(独热编码),这种表示方式将每一个分类特征变量的m个可能的取值转变成m个二值特征,对于每一条数据这m个值中仅有一个特征值为1,其他的都为0。
transformations = ColumnTransformer(
transformers=[
("num", numeric_transformer, numerical),
("cat", categorical_transformer, categorical),
]
)
ColumnTransformer()在Python的机器学习库scikit-learn中,可以选择地进行数据转换。例如,它允许将特定的转换或转换序列仅应用于数字列,而将单独的转换序列仅应用于类别列。
(2)预测管道
clf = Pipeline(
steps=[("preprocessor", transformations), ("classifier", LGBMClassifier())]
)