Exemplo n.º 1
0
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
Exemplo n.º 2
0
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())