工作中常使用的数据转换有很多,比如SimpleImputer
类可用于替换缺少的值,MinMaxScaler
类可用于缩放数值,而OneHotEncoder
可用于编码分类变量。
ColumnTransformer()
在Python的机器学习库scikit-learn中,可以选择地进行数据转换。例如,它允许将特定的转换或转换序列仅应用于数字列,而将单独的转换序列仅应用于类别列。
要使用ColumnTransformer
,必须指定一个转换器列表。每个转换器是一个三元素元组,用于定义转换器的名称,要应用的转换以及要应用于其的列索引,例如:(名称,对象,列)
1. ColumnTransformer
将OneHotEncoder
应用于列0和1。
transformer = ColumnTransformer(transformers=[('cat', OneHotEncoder(), [0, 1])])
2. 对数字列0和1应用具有中值插补的SimpleImputer
,对分类列2和3应用最频繁插补的SimpleImputer
。
t = [('num', SimpleImputer(strategy='median'), [0, 1]), ('cat', SimpleImputer(strategy='most_frequent'), [2, 3])]
transformer = ColumnTransformer(transformers=t)
3. 如果第0列和第1列是数字列,而第2列和第3列是分类列,而我们只想转换分类数据并不改变数字列,则可以按以下方式定义ColumnTransformer
transformer = ColumnTransformer(transformers=[('cat', OneHotEncoder(), [2, 3])], remainder='passthrough')