class ProductLearning(): def __init__(self): self.collector = Collector() self.normalize = Normalizer() def load_linear(self, company, product, period): repository = LinearModelRepository() model = repository.load_valid(product, company, period.value) if len(model.params) > 0: model = model product = model.product company = model.company else: model = self.fit_linear_product(product, company) model.company = {"cod": company} model.product = {"cod": product} repository.save(model) return model def fit_linear_product(self, codigoProduto, codigoFilial, features=[], target=None, training_date_from=datetime.now().timestamp(), training_date_to=datetime.now().timestamp(), period=Period.MONTHLY): company = {"cod": codigoFilial} df = self.collector.colector_mes(codigoProduto, codigoFilial) df = self.normalize.normalizar(df) model = LinearModel() if df.size > 0: product = {"cod": df.loc[0, "KEY:PRODUTO:CODIGO"]} real_params = [] for col in df.columns: column = col.split(":") if len(column) > 0: if column[0] == 'PARAMS': real_params.append(col) if column[0] == 'CALENDAR' and column[1] != 'DATE': real_params.append(col) if column[0] == 'EVENT': real_params.append(col) X = df[real_params].values y = df['METRIC:QTD'].values if df.size != 0: model.fit(X, y) model.params = real_params model.training_date_from = training_date_from model.training_date_to = training_date_to model.period = period #self.model = self.regression#pickle.dumps(self.regression) return model
from lib.linearmodel import LinearModel from lib.repository.dbconnection import DBConnection from lib.collector import Collector linear = LinearModel() db = DBConnection() collector = Collector() print(collector.colector_mes('0100102000', '020101')) print(linear.to_dict())