問題タブ [rpart]
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 - 新しい因子 (カテゴリ) 変数での rpart を使用した予測
R を使用して機械学習を実践しています。トレーニングには rpart メソッドを使用しています。データは、UCI の成人向けデータ セットです。次のようにリンクします
http://archive.ics.uci.edu/ml/datasets/Adult
練習を簡素化するために、いくつかの属性のみを選択し、データ セットを 20% のみに減らします。
「rpart」を使用してモデルを適合させるには約 1 分かかります (「gbm」または「rf」では遅くなります)。
問題は、新しいデータ値での私の予測から来ています。新しいデータ フレームを作成します
「教育に新しいレベルがあります」というエラーが返されます。
問題がこれらのカテゴリ (因子) 変数に起因することはわかっています。どういうわけか、彼らは「Bachelors」をすでに持っている要因としてではなく、新しい文字列 (新しい要因) として認識しています。
r - DFとrpart $ whereを組み合わせる?
DF$where <- tree$where
データとして使用して rpart オブジェクトをフィッティングした後に行うDF
と、各行は列を介して対応するリーフにマップされますwhere
か?
ありがとう!
r - predict(rpart.model) の意味
とすれば:
これにより、トレーニング データの交差検証された予測が得られますか?
rpart ドキュメントで CV 予測の確認が見つかりませんでした。
10倍
r - rpart を因子の数を増やして動作させるにはどうすればよいですか?
rpart パッケージ (デシジョン ツリー モデル用) だけで、データの因子レベルの数を増やすと、パッケージの速度が大幅に低下することがわかりました。他のパッケージと比較しましたが、rpartだけはそうらしいです。以下は、私のデータに対してさまざまなアルゴリズムを試したグラフです。X 軸は使用された因子レベルの数を示し、Y 軸は時間を秒単位で示します。ご覧のとおり、rpart では、因子数の増加によるスパイクが非常に大きくなっています。
オンラインでいくつかのソースとスタック オーバーフローのページを読むことで、これは rpart:::rpart.matrix の for ループに関係しており、[ls]apply で変更するとコードのその部分が高速化されることがわかりました。
これが元のコードです
これは、ループを高速化するために提案された変更です
ただし、rpart パッケージ全体を高速化するにはどうすればよいですか?
rpart コードをダウンロードしてこれらの変更を行うことはできますか?
また、スローダウンの理由は、カテゴリ変数を 0/1 の種類の「平坦化された変数」に変換するコードであることも理解しています。これは本当に必要ですか?この因子を使用する行をマークするために、おそらく各因子のリストを維持するだけで、内部実装でカテゴリ変数を別の方法で処理することはできませんか?
お知らせ下さい。ありがとう。
r - rpart.object から元の名前を取得する
R の rpart パッケージを使用して作成されたモデルを保存しました。これらの保存されたモデルからいくつかの情報を取得しようとしています。特にrpart.objectから。ドキュメント ( rpart doc ) は役に立ちますが、不明な点がいくつかあります。
- どの変数がカテゴリ変数で、どの変数が数値変数かを調べるにはどうすればよいですか? 現在、私がしていることは、分割マトリックスの「インデックス」列を参照することです。数値変数のみの場合、エントリが整数ではないことに気付きました。これを行うためのよりクリーンな方法はありますか?
- csplit行列は、カテゴリ変数が整数を使用して取ることができるさまざまな値を参照します。つまり、R は元の名前を整数にマップします。このマッピングにアクセスする方法はありますか? たとえば。たとえば、元の変数
Country
が値France, Germany, Japan
などのいずれかを取ることができる場合、csplit マトリックスは、特定の分割が に基づいていることを知らせてくれますCountry == 1, 2
。ここで、rpart は参照をそれぞれに置き換えてFrance, Germany
い1, 2
ます。France, Germany, Japan
モデル ファイルから元の名前を取得するにはどうすればよいですか? また、名前と整数の間のマッピングが何であるかを知るにはどうすればよいですか?
r - Rのrpartツリーから変換されたas.partyオブジェクトの逸脱を見つける方法は?
Rでツリーを作成しました。
今、私は rp.party オブジェクトの逸脱を見つけたいと思っています。rp オブジェクトに行かずにそうする方法はありますか?
ありがとう!
r - rpartの決定木を用いたデータ予測
R を使用して、以下のような構造のデータを含む「d」というデータ フレームを分類しています。
データには 576666 行があり、列 "classLabel" には 3 つのレベル (ONE、TWO、THREE) の係数があります。
rpart を使用して決定木を作成しています。
そして、次の「classLabel」の値を予測したいと思いますnewdata
。
私の結果は、「classLabel」の 3 つの可能な値の確率を持つ 4 行の行列になると期待していますnewdata
。しかし、p の結果として得られるのは、以下のような 576666 行のデータフレームです。
predict
関数を実行すると、次の警告も表示されます。
私はどこで間違っていますか?!