Однако выходные данные pandas.qcut представляют собой список интервалов, а классификатору RandomForest в scikit-learn нужна строка. Я обнаружил, что могу преобразовать интервал в строку, используя .astype(str). Вот краткий пример того, что я делаю:
Код: Выделить всё
import pandas as pd
from random import sample
vals = sample(range(0,100), 100)
cuts = pd.qcut(vals, q=5)
str_cuts = pd.qcut(vals, q=5).astype(str)
Однако цель этого Система состоит в том, чтобы обучить RandomForest, сохранить его в файл, а затем позволить кому-либо загрузить его позже и получить классификацию для нового тестового экземпляра, который недоступен во время обучения. А поскольку классификатор обучался на дискретных данных, новый экземпляр теста необходимо будет дискретизировать, прежде чем его можно будет использовать. Поэтому я хочу иметь возможность прочитать новый экземпляр, применить к нему уже установленную схему дискретизации, преобразовать его в строку и пропустить через случайный лес. Однако я зациклен на том, как лучше всего «применить схему дискретизации».
Есть ли простой способ справиться с этим? Я предполагаю, что не существует простого способа преобразовать строку обратно в интервал. Я могу получить список всех значений интервалов из дискретизации (например: Cuts.unique()) и применить его во время тестирования, но для этого потребуется сохранить/загрузить словарь дискретизации вместе со случайным лесом, что кажется неуклюжий, и я боюсь столкнуться с проблемами при попытке воссоздать категориальную переменную (в основном из R, который чрезвычайно требователен к формату категориальных переменных). Или есть другой способ обойти эту проблему, которого я не вижу?
Подробнее здесь: https://stackoverflow.com/questions/576 ... back-again