問題タブ [party]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
r - `party::cforest()` から OOB 混同行列を取得するには?
パッケージ内のrandomForest()
関数は、分類の out-of-bag 予測に基づいた混同行列を提供するのrandomForest
に非常に役立ちます。
パッケージ内のcforest()
関数は、この情報を提供していないようです。ドキュメントで「混乱」を検索しても、有用なものは何も得られませんでした。ここでも検索しませんでした。多分私は何かを見落としていますか?party
party
party::cforest()
分類モデルの OOB 混同行列を取得する方法はありますか?
r - partykit のノードの深さ
R パッケージを使用してツリーを構築していpartykit
ますが、各内部ノードの深さの数値を決定する簡単で効率的な方法があるかどうか疑問に思っています。たとえば、ルート ノードの深さは 0、最初の 2 つの子ノードの深さは 1、次の子ノードの深さは 2 というようになります。これは最終的に、変数の最小深度を計算するために使用されます。以下は、非常に基本的な例です ( から引用vignette("constparty", package="partykit")
)。
この例では、次のようなものを出力したいと考えています。
私の質問が具体的すぎる場合は申し訳ありません。
r - 二分木をたどって分割条件を取得する - ctree(party)、再帰関数
一般的なデータセットを使用して、データセットで発生したエラーを再現しようとしています。何か不足している場合は修正してください。
Classification
を使用してツリーをフィッティングした後library(party)
、各ノードでツリーの分割条件を取得しようとしています。バグが見つかるまで、問題なく動作していると信じていたコードを書くことができました。誰かがそれを解決するのを手伝ってくれますか?
私のコード:
今、結果は私にすべてのノードと分割条件と予測のリストを与えます(私は仮定しました)。しかし、分割条件を確認すると、
- Node5で予想される出力: {1.1, 1.2, 1.6, 1.7 }
# from printing the tree print(ct), I get this
私の関数から Node5に出力: {"1" , "1.3" ,"1.4" ,"1.5" } これは基本的に Node6 の分割条件であり、これは間違っています。どうやってこれを手に入れたのですか?
/li>z <- result[2] #I know node5 is second in the list
私が疑問に思っているのは、私の function( recurse_tree
) は常に、左側のノードではなく、右側のターミナル ノードの分割条件を示していることです。どんな助けでも大歓迎です。
r - partykit オブジェクトの変数 ID が一致しません
私は使用していて、不一致partykit
の可能性があることに気付きましたvarid
(何かを誤解していない限り)。以下はサンプルコードです。
によって返されるルート ノードはnodeapply
、分割変数として変数 5 を示します。
また、明示的に生成されたリストの最初の要素には5 があります。データ フレームsplit$varid
を見ると、5 番目の列はであり、4 番目の列は、オブジェクトによって示されるルート ノードのです。iris
Species
Petal.Width
varid
j48_party
varid
実際に使われている機能が+1されているようですが、これは意図的なものですか?
r - 一変量 MLE 適合を行うための partykit パッケージの mob 関数を取得できません
partykit パッケージの mob 関数で単変量 MLE 適合を行うことができません。
UseMethod("estfun") のエラー: クラス "fitdistr" のオブジェクトに適用される 'estfun' に適用可能なメソッドがありません
r - partykit を使用したカスタム分割ルール
この投稿は次の質問に続きます: https://stackoverflow.com/questions/31234329/rpart-user-defined-implementation
さまざまなモデルをテストできるように、カスタマイズされた基準でツリーの成長を処理できるツールに非常に興味があります。
partykit R パッケージを使用して、分割ルールが Cox モデルの負の対数尤度 (Cox モデルの場合は対数準尤度) によって与えられ、Cox モデルが適合するツリーを成長させようとしました各葉にあります。
MOB 関数に関するビネットを読んで理解したように、独自の分割基準を実装するには 2 つの方法があります。つまり、フィット関数がリストまたはモデル オブジェクトを返すようにすることです。
私の目的のために、2つのソリューションを試しましたが、うまくいきませんでした。
解決策 1: リスト オブジェクトを返す:
「暴徒」ビネットのように「乳がんデータセット」を例にとります。
私はこれを試しました:
X 行列の特異性に関する警告があり、mob 関数は 1 つのノードを持つツリーです (アルファの値が小さい場合でも)。
coxph 関数を実行する場合、X 行列には特異点の問題がないことに注意してください。
解決策 2: coxph.object を返す:
私はこれを試しました:
今回は、「progrec」変数に沿って分割します。
解決策 1 の何が問題なのか知りたいです。
回帰問題についても同様のことを試しましたが、同じ結果が得られ、単一の葉で終わります。
また、「モデルをノードに合わせる」と「分割する」の両方に変数を使用しても問題がないかどうかを知りたいです。
前もって感謝します。
おそらく、partykit の機能について他にも質問があるでしょう。
r - cforest を並行してトレーニングする
790,000 行と 140 個の予測子を持つ非常に大きなデータ フレームがあります。これらのいくつかは、互いに強い相関関係にあり、異なるスケールで関係しています。randomForest
パッケージを使用すると、データの小さなサンプルのみを使用して各コアでフォレストを成長させることができます。次のように、関数を使用しforeach
てそれらをマージし、combine()
1 つの大きなツリーを取得します。
party
さまざまなスケールで変数が相関しているため、パッケージの条件付きランダム フォレストを使用したいと思いますがcombine()
、cforest の方法がないため、複数の cforest オブジェクトを組み合わせて 1 つの重要度プロットまたは 1 つの予測を取得する方法がわかりません。
データの小さなサブセットで 1 つの大きな cforest をトレーニングする方法、またはいくつかの小さな cforest を作成してそれらを 1 つの大きな条件付きフォレスト モデルに結合する方法はありますか?
r - J48 のプロパティ値の取得
私の質問に続い て 、ノードの値を取得してその名前に連結するために何を追加すればよいか知りたいです。J48 ディシジョン ツリーがあります。
結果として次の文字列を取得します。
次のものを取得したいと思います(値の連結):
私が使用するコードは次のとおりです。