2017-10-17 6 views
0

rpy2(バージョン2.8.6)のrpartをpython 3.5に使用しており、分類のための決定ツリーを訓練したいと考えています。 owner_train_label形状のnumpyののfloat64アレイ(12610)であり、 owner_train_data形状のnumpyののfloat64アレイ(12610,88)であるrpy2とrpartを使用したときの非適合配列エラー

import rpy2.robjects.packages as rpackages 
from rpy2.robjects.packages import importr 
from rpy2.robjects import numpy2ri 
from rpy2.robjects import pandas2ri 
from rpy2.robjects import DataFrame, Formula 
rpart = importr('rpart') 
numpy2ri.activate() 
pandas2ri.activate() 

dataf = DataFrame({'responsev': owner_train_label, 
       'predictorv': owner_train_data}) 
formula = Formula('responsev ~.') 
clf = rpart.rpart(formula = formula, data = dataf, method = "class", control=rpart.rpart_control(minsplit = 10, xval = 10)) 

:私のコードスニペットは、このようになりますこれは、コードの最終行をで実行したときのエラーです。

RRuntimeError: Error in ((xmiss %*% rep(1, ncol(xmiss))) < ncol(xmiss)) & !ymiss : 
non-conformable arrays 

私はそれは、彼らが非適合配列ですが、同じトレーニングデータ用として、私は成功しsklearnの決定木を使用して訓練することができますなぜ私にはわからない私に言っていることを取得します。 ご協力いただきありがとうございます。

答えて

0

pandasを使ってデータフレームを作成し、rpy2のpandas2riを使ってpanadasデータフレームをrpartに渡して、Rのデータフレームに変換しました。

from rpy2.robjects.packages import importr 
from rpy2.robjects import pandas2ri 
from rpy2.robjects import Formula 
rpart = importr('rpart') 
pandas2ri.activate() 

df = pd.DataFrame(data = owner_train_data) 
df['l'] = owner_train_label 
formula = Formula('l ~.') 
clf = rpart.rpart(formula = formula, data = df, method = "class", control=rpart.rpart_control(minsplit = 10, xval = 10)) 
関連する問題