Преобразование интервала pandas в строку (и обратно) ⇐ Python

Программы на Python
Anonymous
Преобразование интервала pandas в строку (и обратно)

Сообщение Anonymous »

Я относительно новичок в Python и пытаюсь подготовить некоторые данные для обучения RandomForest. По разным причинам мы хотим, чтобы данные были дискретными, поэтому есть несколько непрерывных переменных, которые необходимо дискретизировать. Я нашел qcut в pandas, который, кажется, делает то, что я хочу - я могу установить несколько ячеек, и он будет дискретизировать переменную на такое количество ячеек, пытаясь сохранить четность счетчиков в каждой ячейке.

Однако выходные данные 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)
а затем str_cuts — одна из переменных, передаваемых в случайный лес.

Однако цель этого Система состоит в том, чтобы обучить RandomForest, сохранить его в файл, а затем позволить кому-либо загрузить его позже и получить классификацию для нового тестового экземпляра, который недоступен во время обучения. А поскольку классификатор обучался на дискретных данных, новый экземпляр теста необходимо будет дискретизировать, прежде чем его можно будет использовать. Поэтому я хочу иметь возможность прочитать новый экземпляр, применить к нему уже установленную схему дискретизации, преобразовать его в строку и пропустить через случайный лес. Однако я зациклен на том, как лучше всего «применить схему дискретизации».

Есть ли простой способ справиться с этим? Я предполагаю, что не существует простого способа преобразовать строку обратно в интервал. Я могу получить список всех значений интервалов из дискретизации (например: Cuts.unique()) и применить его во время тестирования, но для этого потребуется сохранить/загрузить словарь дискретизации вместе со случайным лесом, что кажется неуклюжий, и я боюсь столкнуться с проблемами при попытке воссоздать категориальную переменную (в основном из R, который чрезвычайно требователен к формату категориальных переменных). Или есть другой способ обойти эту проблему, которого я не вижу?

Подробнее здесь: https://stackoverflow.com/questions/576 ... back-again

Вернуться в «Python»