我通過RPy2
在R中使用randomForest
庫。我想回傳使用caret
predict
方法計算的值,並將它們連接到原始的pandas
數據框。見下面的例子。Rpy2和熊貓:從預測到熊貓數據幀加入輸出
import pandas as pd
import numpy as np
import rpy2.robjects as robjects
from rpy2.robjects import pandas2ri
pandas2ri.activate()
r = robjects.r
r.library("randomForest")
r.library("caret")
df = pd.DataFrame(data=np.random.rand(100, 10), columns=["a{}".format(i) for i in range(10)])
df["b"] = ['a' if x < 0.5 else 'b' for x in np.random.sample(size=100)]
train = df.ix[df.a0 < .75]
withheld = df.ix[df.a0 >= .75]
rf = r.randomForest(robjects.Formula('b ~ .'), data=train)
pr = r.predict(rf, withheld)
print pr.rx()
它返回
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
a a b b b a a a a b a a a a a b a a a a
Levels: a b
但如何才能join
這給withheld
數據幀或比較原始值?
我已經試過這樣:
import pandas.rpy.common as com
com.convert_robj(pr)
但這返回一個字典,其中鍵是字符串。我想有一個工作圍繞withheld.reset_index()
,然後將字典鍵轉換爲整數,然後加入兩個,但必須有一個更簡單的方法!