Я использую OrdinalEncoder и не могу найти способ указать порядок кодирования.Я имею в виду, что у меня есть такие категории, как «плохой», «средний», «хороший», которые, естественно, имеют порядок.Но я хочу указать этот порядок, так как кодировщик не может сам знать значение категорий.Действительно, при использовании категории = 'auto' некоторые категории кодируются в неправильном направлении относительно других, и я не хочу этого, потому что я знаю, по крайней мере для некоторых из них, является ли корреляция положительной или отрицательной.
Но указание категорий приводит к ошибке во время подгонки:
Объект 'OrdinalEncoder' не имеет атрибута handle_unknown.
Если я не указываю категории,процесс подгонки идет хорошо, и я не понимаю, почему (после подгонки атрибут "Categories_" показывает мне те же категории, которые я ввожу вручную, когда пытаюсь их указать).
Я указываю категории в виде списка списков.Вот что происходит без указания категорий.
import pandas as pd
from sklearn.preprocessing import OrdinalEncoder
df = pd.DataFrame(np.array([['a','a','a'], ['b','c','c']]).transpose())
oE = OrdinalEncoder(categories='auto')
oE.fit(df)
print(oE.categories_)
В результате: [array(['a'], dtype=object), array(['b', 'c'], dtype=object)]
Явное указание категорий:
df = pd.DataFrame(np.array([['a','a','a'], ['b','c','c']]).transpose())
oE = OrdinalEncoder(categories=[['a'], ['b', 'c']])
oE.fit(df)
В результате возникает эта ошибка:
Трассировка (последний последний вызов):
Файл "", строка 3, в oE.fit (df)
Файл "/ home/alessio/anaconda3/lib/python3.6/site-packages/sklearn/preprocessing/_encoders.py ", строка 774, в нужном состоянии ._fit (X)
File" / home / alessio / anaconda3 /lib / python3.6 / site-packages / sklearn / preprocessing / _encoders.py ", строка 85, в _fit if self.handle_unknown == 'error':
AttributeError: 'Объект OrdinalEncoder' не имеет атрибута 'handle_unknown '