############################################################
# Machine Learning
############################################################
from .visualID_Eng import fg, bg, hl
from .core import centerTitle, centertxt
[docs]
def y2c(mc2i,y):
import tensorflow as tf
from tensorflow import keras
#from keras.utils import np_utils
from keras.utils import to_categorical
y_array = y.copy()
y_array = y_array.to_numpy() # transformation au format numpy
# transformation des valeurs de y1 & y2 en entiers
for x in range(len(y_array)):
#print(x, y_array[x], mapc2i[y_array[x]])
y_array[x] = mc2i[y_array[x]]
yohe = to_categorical(y_array)
del y_array
return yohe
[docs]
def categorizeY_2ohe(Ctot, y1, y2):
"""
one-hot-encodes a pandas column of categorical data
input:
- Ctot is the reference pandas column, necessary to find all unique categories in this column
- y1 and y2 are the actual pandas column that will be categorized. y1 and y2 are supposed to be the ytest and ytrain subsets of Ctot
output:
- y1ohe and y2ohe are the numpy arrays returned by this routine
"""
uv = Ctot.unique()
print(f"Catégories uniques : {uv}")
mapc2i = {}
for x in range(len(uv)):
mapc2i[uv[x]] = x
print(f"Correspondance entre chaque catégorie unique et un entier : {mapc2i}")
y1ohe = y2c(mapc2i,y1)
y2ohe = y2c(mapc2i,y2)
print(f"Structure (shape) des tableaux renvoyés par categorize1C_2ohe. y1 : {y1ohe.shape}, y2 : {y2ohe.shape}")
del mapc2i, uv
return y1ohe, y2ohe