KBinsDicretizer производит различные формы - PullRequest
0 голосов
/ 27 апреля 2020

Мне требуется равная по ширине дискретизация атрибутов для набора данных, а затем продолжить построение значений набора данных, дискретизированных по отношению к непрерывному. для этого мне нужен полный набор данных с дискретным значением, а не разреженная матрица

X,y = datasets[0]
enc = KBinsDiscretizer(n_bins=5 )
X_binned = enc.fit_transform(X)
print(pd.DataFrame.sparse.from_spmatrix(X_binned).shape)
print(X.shape)

Вывод:

(100, 10)
(100, 2)

Спасибо

1 Ответ

1 голос
/ 27 апреля 2020

Проблема в том, что KBinsDiscretizer по умолчанию используется метод кодирования onehot, означающий, что преобразованный результат будет представлять собой закодированные столбцы OneHot, полученные из каждой функции.

Вы можете установить кодирование в ordinal, так что каждый бин закодирован как целочисленное значение, и, следовательно, форма сохраняется:

enc = KBinsDiscretizer(n_bins=5, encode='ordinal')
X_binned = enc.fit_transform(x)
...