Как видно из заголовка, self
из экземпляра класса не является самим экземпляром класса.
Это происходит, когда я использую пользовательский класс с конвейерами scikit-learn, но не когда я использую тот же пользовательский класс отдельно.
import pandas as pd
import numpy as np
from sklearn.base import BaseEstimator, TransformerMixin
from sklearn.preprocessing import OneHotEncoder
class multi_feature_OHE(BaseEstimator, TransformerMixin):
''' Encode multiple redundant features as one, usign One-Hot-Encoder. '''
def __init__(self):
self.encoder = OneHotEncoder(handle_unknown='ignore')
def fit(self, X):
#self.encoder.fit(X)
print(type(self)) # <--- We print the type of self here!
return self
def transform(self, X):
...
Здесь он печатает <class 'numpy.ndarray'>
pipeline = make_pipeline(...,
multi_feature_OHE)
pipeline.fit(data)
В методе fit
, self
== X
и X
= = None
.
Но здесь он печатает <class '__main__.multi_feature_OHE'>
a = multi_feature_OHE()
a.fit(data)