我想使用sklearn的OneHotEncoder和ColumnTransformer对两列:Lines和Name进行编码。然而,使用以下代码我只能编码一列。
from sklearn.preprocessing import OneHotEncoderfrom sklearn.compose import ColumnTransformerX = new_df_cl.iloc[:,:-2].valueslines = ColumnTransformer(transformers=[('encoder', OneHotEncoder(), [4])], remainder='passthrough')X = np.array(lines.fit_transform(X))
回答:
在ColumnTransformer
的转换器列表中的元组语法是
(name, transformer, columns)
其中columns
可以是列索引的列表。所以如果你想转换索引为4和5的列,可以像这样指定列为[4, 5]
:
ColumnTransformer( transformers=[('encoder', OneHotEncoder(), [4, 5])], # <-- 这里 remainder='passthrough')