Я хотел бы создать решение для машинного обучения, прогнозируя предстоящие продажи для каждого продукта.
Набор данных содержит тысячи продуктов (которые представлены в виде строки, например, «Product_1_12345»).
Поскольку информация о продукте необходима для моделирования (хочу прогнозировать на уровне продукта), я пробовал разные подходы (среди прочего создание макетов).
Однако, поскольку это вызывало слишком много столбцов, я изучаю альтернативу. Что я хотел бы иметь:
Original_Product_ID New_Product_ID
Product1_ABC 1
Product4_ABC 2
Product1_ABC 1
Another_Product 3
Product4_ABC 2
Цель состоит в том, чтобы присвоить каждой уникальной строке число. Но если у нас будет этот продукт позже, я хотел бы иметь тот же номер.
Позже я хотел бы преобразовать числа обратно в исходные ID продукта.
Кто-нибудь знает как это сделать? Словарь не выглядит решением, так как мне нужно заполнять его автоматически (а у меня тысячи товаров).
возможно, я закрылся слишком быстро, я добавлю метод для сопоставления идентификаторов
Для преобразования вы можете использовать pandas.factorize
:
Эта функция выводит оба фактора в виде пустого массива и уникальные идентификаторы в порядке факторов.
Вы можете сохранить оба и использовать этот уникальный список идентификаторов, чтобы map
вернуть исходные идентификаторы позже:
factors, ids = pd.factorize(df['Original_Product_ID'])
df['New_Product_ID'] = factors
# map the original IDs
df['Original_ID_from_factor'] = df['New_Product_ID'].map(dict(enumerate(ids)))
выход:
Original_Product_ID New_Product_ID Original_ID_from_factor
0 Product1_ABC 0 Product1_ABC
1 Product4_ABC 1 Product4_ABC
2 Product1_ABC 0 Product1_ABC
3 Another_Product 2 Another_Product
4 Product4_ABC 1 Product4_ABC
используйте
pandas.factorize
, чтобы назначить уникальный идентификатор каждому уникальному идентификатору. factorize выводит как факторы, так и список, если вы хотите восстановить исходные переменные позже