Я создал сквозную класс-оболочку для существующего класса из sklearn
, и он не работает должным образом:
import pandas as pd
from sklearn.preprocessing import OrdinalEncoder
tiny_df = pd.DataFrame({'x': ['a', 'b']})
class Foo(OrdinalEncoder):
def __init__(self, *args, **kwargs):
super().__init__(self, *args, **kwargs)
def fit(self, X, y=None):
super().fit(X, y)
return self
oe = OrdinalEncoder()
oe.fit(tiny_df) # works fine
foo = Foo()
foo.fit(tiny_df) # fails
Соответствующая часть сообщения об ошибке, которое я получаю:
~\.conda\envs\pytorch\lib\site-packages\sklearn\preprocessing\_encoders.py in _fit(self, X, handle_unknown)
69 raise ValueError("Unsorted categories are not "
70 "supported for numerical categories")
---> 71 if len(self._categories) != n_features:
72 raise ValueError("Shape mismatch: if n_values is an array,"
73 " it has to be of shape (n_features,).")
TypeError: object of type 'Foo' has no len()
Каким-то образом закрытое свойство родителя _categories
, похоже, не установлено, хотя я вызвал родительский конструктор в методе __init__()
моего класса. Я, должно быть, здесь упускаю что-то простое и буду признателен за любую помощь!