Spaces:
Sleeping
Sleeping
from abc import ABC, abstractmethod | |
import joblib | |
import logging | |
import pickle | |
from pathlib import Path | |
logging.basicConfig(level=logging.INFO) | |
logger = logging.getLogger(__name__) | |
class BaseModel(ABC): | |
def __init__(self, model_path): | |
self.model_path = model_path | |
self.model = None | |
self.scaler = None | |
self.X_train = None | |
self.y_train = None | |
def train(self, X, y): | |
pass | |
def predict(self, X): | |
pass | |
def save_model(self): | |
model_data = { | |
'model': self.model, | |
'scaler': self.scaler, | |
'X_train': self.X_train, | |
'y_train': self.y_train | |
} | |
with open(self.model_path, 'wb') as f: | |
pickle.dump(model_data, f) | |
def load_model(cls): | |
instance = cls() | |
with open(instance.model_path, 'rb') as f: | |
model_data = pickle.load(f) | |
instance.model = model_data['model'] | |
instance.scaler = model_data['scaler'] | |
instance.X_train = model_data['X_train'] | |
instance.y_train = model_data['y_train'] | |
return instance |