AttributeError: module '__main__' has no attribute 'PandasDataFrameSelector'
Как это исправить, чтобы при включении модели включался пользовательский класс?
У меня есть пользовательский класс sklearn длявыбрав логические столбцы в моем конвейере и хочу вызвать его через конечную точку API, но получаю ошибку AttributeError: module '__main__' has no attribute 'PandasDataFrameSelector'
.
При тестировании в ноутбуке Jupyter у меня нет проблем, но когда у меня есть .py, я получаю сообщение об ошибке, когда конечная точка API пытается прочитать .pkl, потому что пользовательский класс не включен в.pkl )
Нужно ли добавлять if __name__ == '__main__':
до или после выбора модели?
Я новичок в развертывании Python dev ops,и мог найти только эту статью => https://www.stefaanlippens.net/python-pickling-and-dealing-with-attributeerror-module-object-has-no-attribute-thing.html
from sklearn.externals import joblib
from sklearn.base import BaseEstimator, TransformerMixin
import numpy as np
import pandas as pd
# model training here + custom class ...
class PandasDataFrameSelector(BaseEstimator, TransformerMixin):
def __init__(self, attribute_names):
self.attribute_names = attribute_names
def fit(self, X, y=None):
return self
def transform(self, X):
return X[self.attribute_names].values
# export model
joblib.dump(pl, "model.pkl")
# read model
class PandasDataFrameSelector(BaseEstimator, TransformerMixin):
def __init__(self, attribute_names):
self.attribute_names = attribute_names
def fit(self, X, y=None):
return self
def transform(self, X):
return X[self.attribute_names].values
model = joblib.load("model.pkl")