Проблема в том, что KBinsDiscretizer
по умолчанию используется метод кодирования onehot
, означающий, что преобразованный результат будет представлять собой закодированные столбцы OneHot, полученные из каждой функции.
Вы можете установить кодирование в ordinal
, так что каждый бин закодирован как целочисленное значение, и, следовательно, форма сохраняется:
enc = KBinsDiscretizer(n_bins=5, encode='ordinal')
X_binned = enc.fit_transform(x)