【问题标题】:Non conformable array error when using rpart with rpy2rpart 与 rpy2 一起使用时出现不一致的数组错误
【发布时间】:2018-03-28 17:47:33
【问题描述】:

我在 python 3.5 上使用 rpartrpy2(版本 2.8.6),并希望训练决策树进行分类。我的代码 sn-p 如下所示:

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))

其中 owner_train_label 是一个形状为 (12610,) 的 numpy float64 数组,并且 owner_train_data 是一个形状为 (12610,88) 的 numpy float64 数组

这是我在运行最后一行代码以拟合数据时遇到的错误。

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

我知道它告诉我它们是不一致的数组,但我不知道为什么对于相同的训练数据,我可以成功地使用 sklearn 的决策树进行训练。 谢谢你的帮助。

【问题讨论】:

    标签: arrays numpy python-3.5 decision-tree rpy2


    【解决方案1】:

    我通过使用 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))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-22
      • 2012-10-30
      • 1970-01-01
      • 2016-10-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多