2016-05-23 1 views
1

私の研究中にこの問題を解決すると思う。私はC5.0パッケージのためにthisのようなものを探しています。R C5.0はすべての葉について規則と確率を得る

SO答えで提供されるメソッドは、partyオブジェクトで機能します。ただし、C5.0パッケージはas.partyをサポートしていません。私のさらなる研究では、this commentが、C5.0パッケージのメンテナーがすでに関数をプログラムしていたが、エクスポートしていないことが分かった。

私は、これは動作するはずです素晴らしいと思ったが、残念ながら示唆された機能C50:::as.party.C5.0(mod1)でエラーが発生します:

error in as.data.frame.default(x[[i]], optional = TRUE) : 
    cannot coerce class ""function"" to a data.frame 

感謝このエラーを解決するための任意の提案を。 のは、次の例を使ってみましょう:

library(C50) 
p = iris[1:4] 
t = factor(iris$Species) 
model = C50::C5.0(p,t) 
#summary(model) 

modParty = C50:::as.party.C5.0(model) 

答えて

3

問題は、式の方法とは対照的に、C5.0()のデフォルトの方法を使用するときに発生するようです。あなたはその後、as.party()変換が正常に動作し、後者を使用すると、あなたはそのためにすべての方法を適用することができる場合:

model <- C5.0(Species ~ ., data = iris) 
modParty <- C50:::as.party.C5.0(model) 
modParty 
## Model formula: 
## Species ~ Sepal.Length + Sepal.Width + Petal.Length + Petal.Width 
## 
## Fitted party: 
## [1] root 
## | [2] Petal.Length <= 1.9: setosa (n = 50, err = 0.0%) 
## | [3] Petal.Length > 1.9 
## | | [4] Petal.Width <= 1.7 
## | | | [5] Petal.Length <= 4.9: versicolor (n = 48, err = 2.1%) 
## | | | [6] Petal.Length > 4.9: virginica (n = 6, err = 33.3%) 
## | | [7] Petal.Width > 1.7: virginica (n = 46, err = 2.2%) 
## 
## Number of inner nodes: 3 
## Number of terminal nodes: 4 

そして、あなたがリンクされ、他の議論のように予測したパスの選択:

pathpred(modParty)[c(1, 51, 101), ] 
##  response prob.setosa prob.versicolor prob.virginica 
## 1  setosa 1.00000000  0.00000000  0.00000000 
## 51 versicolor 0.00000000  0.97916667  0.02083333 
## 101 virginica 0.00000000  0.02173913  0.97826087 
##                rule 
## 1            Petal.Length <= 1.9 
## 51 Petal.Length > 1.9 & Petal.Width <= 1.7 & Petal.Length <= 4.9 
## 101      Petal.Length > 1.9 & Petal.Width > 1.7 

Iをなぜ、メソッドがデフォルトのインターフェースで動作しないのか分かりません。しかし、おそらく、必要なモデルフレームを設定することは難しいでしょう。あなたはこれについて、C50の管理者に依頼することを検討するかもしれません。

+0

これがあなたの質問を解決した場合、答えを受け入れることを考慮してください。 –

+0

少し遅くなって申し訳ありません。これは元々の質問に対する非常に便利な答えです。だから私はそれを受け入れたものとしてマークすることに決めました。しかし、私が今まで受け入れられているように印をつけなかったのは、私がまだ報告されていない機能に何らかの問題を抱えているからです。しかし、これは別の話題なので、別の質問をしました:http://stackoverflow.com/q/37515454/3695715。しかし、おそらくあなたもそこに私を助けることができますか?私はすでに私が考えることができるすべてを試しました... この1つであなたの答えをもう一度ありがとう! – Peter

関連する問題