2016-10-19 2 views
1

Я использую H2O для генерации прогнозов на большом наборе данных с идентификатором пользователя в качестве одного из столбцов. Однако, как только я забиваю набор данных, набор данных прогнозов не содержит идентификатора ... Единственное, что держит работу, - это порядок баллов, соответствующий порядку набора входных данных, который довольно неряшливый ИМО.Слияние сумм H2O с исходным набором данных

Есть ли способ инструктировать H2O либо сохранить столбец идентификатора в наборе данных прогнозов, либо, альтернативно, добавить его после подсчета очков, но все же в H2O?

Я менее взволнован тем, что приношу оценки на python или R вместе с набором данных с идентификаторами и использованием cbind и подобных, но, пожалуйста, звоните, если это единственный вариант.

ответ

0

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

import h2o 
h2o.init() 

patients = { 
    'age':[29, 33, 65], 
    'height':[188, 157, 175.1], 
    'name':["Tom", "Dick", "Harry"], 
    'risk':['A', 'B', 'B'] 
    } 

train = h2o.H2OFrame.from_python(
    patients, 
    destination_frame="patients" 
) 

m = h2o.estimators.H2ODeepLearningEstimator() 
m.train(["age","risk"], "height", train) 
p = m.predict(train) 

train["name"].cbind(p["predict"]) 

Поскольку у меня нет тестовых данных, для примера я предсказываю данные обучения. Последний шаг - взять столбцы от train и объединить с колонками от p. (С категорией вы получите дополнительные столбцы, которые вы можете или не хотите включать.)

ПРИМЕЧАНИЕ: Операция cbind выполняется в кластере H2O, а не на клиенте. Таким образом, он работает отлично, если это 100 миллионов строк данных, распространяемых на нескольких машинах.

P.S. Сделайте m.train(["age","height"], "risk", train), чтобы сделать категоризацию.

Смежные вопросы