Как делать прогнозы, используя сохраненную модель RandomForest из Orange GUI - PullRequest
0 голосов
/ 01 сентября 2018

Я использовал Orange GUI и обучил модель RandomForest, которую позже сохранил с помощью виджета SaveModel.

Orange сохраняет свои модели с засолкой, поэтому я пошел и написал следующий скрипт на Python:

import Orange, pickle

model = pickle.load(open('model', 'rb'))

Проблема в том, что я вчера интенсивно искал в Интернете. И не смог найти ни одного примера, чтобы сделать прогноз с моими данными (в том же формате, что и данные, которые я использовал в оранжевом графическом интерфейсе) или достаточную документацию о том, как использовать модель.

После более позднего исследования я обнаружил, что я мог бы оценить предварительно обученную модель, которая не была засечена следующим кодом

results = Orange.evaluation.testing.TestOnTestData(data, test, [lambda testdata: model])

Дело в том, чтобы загрузить данные, которые я должен сделать:

data = Orange.data.Table('trainingData.csv');
test = Orange.data.Table('testData.csv');

И я не смог найти документацию о том, как провести различие между целью и функциями в этих *.csv файлах.

Начните с этого, даже если я смогу создать эти файлы. Я должен был бы сделать несколько уловок, где testData.csv должен был бы иметь длину только одну строку (строку, которую я хочу предсказать) с целевым значением 1. И я бы увидел, что предсказала модель, проверив, была ли оценка 100% или 0%

Так что я знаю, что у меня много вопросов, но я мог бы действительно использовать некоторую помощь по следующим пунктам:

  1. Как определить в файле *.csv цель для функций Orange.data.Table()
  2. Как использовать маринованную модель Orange RandomForest, чтобы сделать прогноз, вместо того, чтобы использовать хитрую оценку, чтобы сделать прогноз. (Чтобы я мог прогнозировать более одного элемента за раз ..)

Большое спасибо за потраченное время

1 Ответ

0 голосов
/ 05 сентября 2018

Итак, после опроса того же самого на Orange GitHub мне удалось найти подходящий ответ.

Для формата файла csv есть страница документации, где объясняется, как определить в наборе данных, что было функцией, а что было целью:

Документация по загрузке данных

Что касается модели, то все было просто. Модель представляет собой объект python, используемый для прогнозирования, поэтому, как только мои данные будут предсказаны в формате, как указано выше в документации, я могу сделать прогноз, вызвав

pred_ind = model(data)
[model.domain.class_var.str_val(i) for i in pred_ind]  # convert to value names (strings)

и если я хочу увидеть проценты, все что мне нужно сделать, это

prob = model(data, model.Probs) 

Но еще лучше:

Как видно из приведенного выше примера, модель хранит домен, на котором она обучалась. Это означает, что вам на самом деле даже не нужно беспокоиться о 1. Когда модели дают данные для прогнозирования, она сначала преобразует их в область, в которой она обучалась, и использует те же переменные, что и целевые и независимые функции (очевидно, им нужны присутствовать в данных).

Если кому-то нужен оригинальный ответ на github, вот он: GitHub

...