Использование функции sklearn ColumnTransformer. Что делают параметры? - PullRequest
0 голосов
/ 10 января 2020

Кто-нибудь может объяснить параметры, передаваемые в ColumnTransformer

Column_Trans=ColumnTransformer([('encoder',OneHotEncoder(),[0])],remainder='passthrough')

У меня нет особого представления о том, что делает [0], так как при изменении значения я получаю ошибки, которые не имеют смысла. Я также думаю, что «passthrough» захватывает столбцы, которые мы не указали, и кодирует их тогда, но я не понимаю, как он не захватывает столбцы, которые не являются категориальными значениями.

1 Ответ

0 голосов
/ 10 января 2020

ColumnTransformer предназначен для последовательного применения различных функций преобразования данных к нескольким столбцам. Работает на arrays, sparse matrices и pandas DataFrames. Результат каждого преобразователя объединяется в единое пространство признаков. Определение класса:

class sklearn.compose.ColumnTransformer(transformers, 
                                        remainder='drop', 
                                        sparse_threshold=0.3, 
                                        n_jobs=None, 
                                        transformer_weights=None)

transformers принимает список кортежей, состоящий из (name, transformer, column(s)).

  • name - указанное пользователем имя для трансформатора
  • transformer - это преобразователь из преобразования данных библиотека от sklearn.
  • column(s) - это список индексов или имен столбцов, которые вы будете использовать sh для применения указанных c transformer

remainder может принимать два значения drop или passthrough. Остальные индексы или столбцы ввода либо удаляются, либо включаются по мере их появления соответственно.


Теперь, возвращаясь к вашему вопросу,

 Column_Trans=ColumnTransformer([('encoder',OneHotEncoder(),[0])],
                                remainder='passthrough')
  • - это преобразователи [('encoder',OneHotEncoder(),[0])]
    • , кодировщик - это name,
    • OneHotEncoder () is transformer
    • column 0 значения будут использоваться для выполнения OneHotEncoding.

Следовательно, окончательный вывод будет совпадать с выводом OneHotEncoded в столбце 0 и оставшимися столбцами ввода при передаче passthrough в remainder.


Пример:

from sklearn.compose import ColumnTransformer
from sklearn.preprocessing import OneHotEncoder
import numpy as np

X = np.array([[0.0, 1.0, 2.3, 2.1],
              [1.0, 0.4, 0.6, 1.2]])

ct = ColumnTransformer([('encoder', OneHotEncoder(), [0])], 
                       remainder='passthrough')

ct.fit_transform(X)

# Here, One Hot Encoding is performed on each row of X on the first columns of 
# each row independently, concatenating last two columns as they originally 
# appear in input

>>> array([[1., 0., 1.0, 2.3, 2.1],
           [0., 1., 0.4, 0.6, 1.2]])
...