Для начала немного об архитектуре моей модели.
Входные данные для моей модели keras довольно просты:
- Категориальная переменная A
- Категориальная переменная B
- Числовой вход C надиапазон [0,1].
Модель имеет один выход:
При обучении модели мой вводdata - это фрейм данных, полученный из базы данных SQL с использованием pd.read_sql()
.Я однозначно кодирую категориальные переменные A и B (которые находятся в col1
adn col2
кадра данных original_data
соответственно) с помощью следующей функции:
from keras import utils as np_utils
def preprocess_categorical_features(self):
col1 = np_utils.to_categorical(np.copy(self.original_data.CURRENT_RTIF.values))
col2 = np_utils.to_categorical(np.copy(self.original_data.NEXT_RTIF.values))
cat_input_data = np.append(col1,col2,axis=1)
return cat_input_data
Позже, когдаМне нужно делать прогнозы из этой модели, входные данные поступают из прямой трансляции из RabbitMQ в форме словаря.Эти данные RabbitMQ должны обрабатываться собственной (другой) функцией reprocess_categorical_features()
.
. Это подводит меня к моему вопросу: как я могу гарантировать, что одноразовые кодировки точно совпадают, независимо от того,m предварительная обработка данных из базы данных или канала rabbitMQ?
Кодирование One-Hot для A, применяемое к данным базы данных:
|---------------------|------------------|
| A | One-Hot-Encoding |
|---------------------|------------------|
| "coconut" | <0,1,0,0> |
|---------------------|------------------|
| "apple" | <1,0,0,0> |
|---------------------|------------------|
| "quince" | <0,0,0,1> |
|---------------------|------------------|
| "plum" | <0,1,0,0> |
|---------------------|------------------|
Кодирование One-Hot для A, применяемое кДанные RabbitMQ (они должны быть одинаковыми):
|---------------------|------------------|
| A | One-Hot-Encoding |
|---------------------|------------------|
| "coconut" | <0,1,0,0> |
|---------------------|------------------|
| "apple" | <1,0,0,0> |
|---------------------|------------------|
| "quince" | <0,0,0,1> |
|---------------------|------------------|
| "plum" | <0,1,0,0> |
|---------------------|------------------|
Можно ли мне сохранить кодировки в виде фрейма данных, numpy ndarray или словаря, чтобы я мог передать кодировки из функциичто предварительно обрабатывает мои тренировочные данные, до функции, которая предварительно обрабатывает мои входные данные?Я открыт для использования других библиотек, кроме Keras, для OHE, но мне интересно узнать, есть ли способ сделать это, используя функцию keras ' to_categorical , которую я сейчас использую.