По форме вашего массива (1,188)
мы можем сделать вывод, что имеется только 1
семпл и 188
функций. Согласно документации из KBinsDiscretizer
, она используется для объединения непрерывных данных в интервалы, и это происходит на уровне объекта, то есть для каждой функции (или, другими словами, для каждого столбца ваших данных) KBinsDiscretizer
вычисляет интервалы бинов, а затем связывает ваши данные, пример которых показан ниже:
X = [[-2, 1, -4, -1],
[-1, 2, -3, -0.5],
[ 0, 3, -2, 0.5],
[ 1, 4, -1, 2]]
est = KBinsDiscretizer(n_bins=3, encode='ordinal', strategy='uniform')
est.fit(X)
Xt = est.transform(X)
Xt
array([[ 0., 0., 0., 0.],
[ 1., 1., 1., 0.],
[ 2., 2., 2., 1.],
[ 2., 2., 2., 2.]
Здесь для каждого столбца дискретизатор вычисляет интервалы бинов и связывает их. В вашем случае у вас есть только одна точка данных для каждой функции, поэтому вычисления в бинах не имеют никакого смысла. Вместо этого, если ваши данные имеют форму (188,1)
, то есть с 188
примерами и 1
, тогда они отлично работают, как показано ниже:
enc = KBinsDiscretizer(n_bins=18, encode='ordinal' ,strategy='uniform')
list_event_MES = np.random.normal(0,2,188).reshape(-1,1)
test =(np.asarray(list_event_MES))
print(test.shape)
(188,1)
enc.fit(test)
test2 = enc.transform(test)
print(test2[0:5])
array([[12.],
[12.],
[ 7.],
[ 9.],
[ 3.]])
Надеюсь, это поможет!