| import joblib |
| import numpy as np |
| import pandas as pd |
| from traning_zone.traitement_data.feature_engeneering.data_clearning import * |
| import spacy |
|
|
|
|
| class Prediction: |
| def __init__(self, X): |
| self.X = X |
| self.pred = None |
| self.x = X |
| self.modele = None |
| self.tv = None |
| self.obj = None |
|
|
| def init_mini_modele_transformer(self, classe, model) -> None: |
|
|
| self.modele = joblib.load(f'traning_zone/mini_modèle_/{classe}/{model}/{model}.pkl') |
| self.obj = joblib.load(f'traning_zone/mini_modèle_/{classe}/transformers/object.pkl') |
| self.tv = joblib.load(f'traning_zone/mini_modèle_/{classe}/transformers/tv_transform.pkl') |
|
|
| def init_modele_transformer(self, modele) -> None : |
|
|
| self.modele = joblib.load(f'traning_zone/hyper_modèle/{modele}/{modele}.pkl') |
| self.obj = joblib.load('traning_zone/hyper_modèle/transformers/object.pkl') |
| self.tv = joblib.load('traning_zone/hyper_modèle/transformers/tv_transform.pkl') |
|
|
| def prediction_grand_modele(self) -> None: |
|
|
| try : |
| Prediction.init_modele_transformer(self, "LogisticRegression") |
|
|
| self.X = self.X.apply(clearning_pred) |
| tv_x = self.tv.transform(self.X) |
| y_pred = self.modele.predict(tv_x) |
|
|
| self.pred = self.obj.inverse_transform(y_pred) |
| except FileNotFoundError : |
| pass |
|
|
| return |
| |
|
|
| def prediction_grand_modele_(self) -> None: |
| self.pred = [] |
| try : |
| trained_nlp = spacy.load("traning_zone/hyper_modèle/SpaCy/spacy_textcat1/model-best") |
|
|
| for x in self.X : |
| x = clearning_pred(x) |
| doc = trained_nlp(x) |
| self.pred.append(doc.cats) |
|
|
| except FileNotFoundError : |
| pass |
|
|
| return |
| |
|
|
| def final_prediction(self) -> pd.DataFrame: |
|
|
| Prediction.prediction_grand_modele(self) |
| pred = self.pred.copy() |
| pr = pred |
| for i in range(len(self.pred)): |
| try : |
| if self.pred[i] not in ["maquillage", "prdouits diététiques", "hygiène bébé"]: |
| |
| Prediction.init_mini_modele_transformer(self, self.pred[i], "LogisticRegression") |
|
|
| tv_x = self.tv.transform(self.X) |
| self.pred[i] = self.modele.predict(tv_x[i]) |
| self.pred[i] = self.obj.inverse_transform(self.pred[i]) |
| else : |
| Prediction.init_mini_modele_transformer(self, self.pred[i], "svm") |
|
|
| tv_x = self.tv.transform(self.X) |
| self.pred[i] = self.modele.predict(tv_x[i]) |
| self.pred[i] = self.obj.inverse_transform(self.pred[i]) |
|
|
| except FileNotFoundError : |
| pass |
|
|
| return pd.DataFrame({"item_desc": self.x ,"classe" : self.pred,"hyper classe" : pr}) |
|
|
|
|
| def final_prediction_(self) -> pd.DataFrame: |
|
|
| Prediction.prediction_grand_modele_(self) |
| pred = self.pred.copy() |
| pr = pred |
| for i in range(len(self.pred)): |
| try : |
| if max(self.pred[i],key = self.pred[i].get).lower() not in ["maquillage", "prdouits diététiques", "hygiène bébé"]: |
| Prediction.init_mini_modele_transformer(self, max(self.pred[i],key = self.pred[i].get).lower(), "LogisticRegression") |
|
|
| tv_x = self.tv.transform(self.X) |
| self.pred[i] = self.modele.predict(tv_x[i]) |
| self.pred[i] = self.obj.inverse_transform(self.pred[i]) |
| else : |
| Prediction.init_mini_modele_transformer(self, max(self.pred[i],key = self.pred[i].get).lower(), "svm") |
|
|
| tv_x = self.tv.transform(self.X) |
| self.pred[i] = self.modele.predict(tv_x[i]) |
| self.pred[i] = self.obj.inverse_transform(self.pred[i]) |
|
|
| except FileNotFoundError : |
| pass |
|
|
| return pd.DataFrame({"item_desc": self.x ,"classe" : self.pred,"hyper classe" : pr}) |