COULIBALY BOURAHIMA
first commit
f1f2665
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})