Я пытаюсь объединить несколько случайных моделей леса с помощью rpy2. combine
команда в R выглядит довольно прямо вперед, но я не знаю, как передать радиочастотные объекты из питона в R.Передача списка объектов randomForest обратно в R с помощью rpy2
Простой пример:
import pandas as pd
import numpy as np
import sys
if sys.version_info[0] < 3:
from string import lowercase
else:
from string import ascii_lowercase as lowercase
import rpy2.robjects as robjects
from rpy2.robjects import pandas2ri
pandas2ri.activate()
r = robjects.r
r.library("randomForest")
df = pd.DataFrame(data=np.random.random(size=(100, 10)), columns=[a for a in lowercase[:10]])
cols = df.columns
RF = []
for _ in range(5):
df['train'] = np.random.random(size=100) < .75
rf = r.randomForest(robjects.Formula('a~.'), data=df[df.train][cols])
RF.append(rf)
Когда я пробую и combine
RF модели R
RFall = r.combine(RF)
Возвращает ошибку:
Error in (function (...) :
Argument must be a list of randomForest objects
у меня есть посмотрел на другие функции в robjects
, но не смог найти тот, который сделает это.
Извините @Igautier, я думал, что это работает. Но я только что попробовал это снова и получаю ошибку ValueError: слишком много значений для распаковки – kungphil
Я могу что-то пропустить, но это должно сработать. Можете ли вы убедиться, что пример кода в вопросе можно воспроизвести? – lgautier
Пример кода @Igautier воспроизводит ошибку, я пробовал это на нескольких разных установках Python – kungphil