問題タブ [mlr]

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.

0 投票する
0 に答える
4158 参照

r - model.frame.default(Terms, newdata, na.action = na.pass, xlev = object$xlevels) のエラー: 因子に新しいレベルがあります

次のユーザー定義関数を使用して分類を行うために mlr パッケージを使用しようとしていますclasFunc。を使用して関数を呼び出すとき

というエラーメッセージが表示されます

model.frame.default(Terms, newdata, na.action = na.pass, xlev = object$xlevels) のエラー: 因子 col1 に新しいレベル 'new level' があります

コードを使用してトレーニングデータとテストデータの要素をマージすることで、それを修正しようとしました

しかし、うまくいかないようです。

makeTask での警告 (type = type、data = data、weights = weights、blocking = blocks、: 列の空の因子レベルが削除されました: col1、col2、col3、col4、col5

これが私の完全なコードです。

ここに完全な出力があります

[1]「折り1」

makeTask での警告 (type = type、data = data、weights = weights、blocking = blocks、: 列の空の因子レベルが削除されました: col1、col2、col3、col4、col5

[1] 「classif.lda フォールド 1 テスト auc:0.673604162894944」

[1]「たたむ2」

makeTask での警告 (type = type、data = data、weights = weights、blocking = blocks、: 列の空の因子レベルが削除されました: col1、col2、col3、col4、col5

[1] 「classif.lda フォールド 2 テスト auc:0.686717528654292」

[1]「三つ折り」

makeTask での警告 (type = type、data = data、weights = weights、blocking = blocks、: 列の空の因子レベルが削除されました: col1、col2、col3、col4、col5

タイミング停止: 0 0 0

model.frame.default(Terms, newdata, na.action = na.pass, xlev = object$xlevels) のエラー: 因子 col1 に新しいレベル 'new level' があります

どうすればこれを修正できますか?

0 投票する
1 に答える
116 参照

r - MLR のリサンプリング エラー

私のタスクは、回帰タスクを階層化することです。データは次のようになります

f1,f2,f3,... m1,m2...,p1,p2,p3...

ここで、f_i は数値で、他の列は係数と整数です。

次のコマンドを実行した後、自己定義メジャー m1 を定義します。

というエラーが表示されました

入力データフレームを数値データのみを含むようにサブセット化すると、そのようなエラーは発生しません。実際、数値データのみが予測に役立ちますが、トレーニングとテストの分割で階層化するには他の列が必要です。誰が何が悪いのか知っていますか?

0 投票する
2 に答える
719 参照

r - mlrパッケージのmakeClassifTask()にブロック要因を含めるにはどうすればよいですか?

一部の分類タスクでは、mlrパッケージを使用して、次のdata.frameようなものを処理する必要があります。

値を同じ にまとめてモデルを相互検証する必要がありますID。チュートリアルから次のことがわかります。

https://mlr-org.github.io/mlr-tutorial/release/html/task/index.html#さらに設定

タスクにブロック要因を含めることができます。これは、いくつかの観測値が「一緒に属している」ことを示しており、リサンプリングのためにデータをトレーニング セットとテスト セットに分割するときに分離すべきではありません。

問題は、このブロッキング要因をどのように含めることができるmakeClassifTaskかです。

残念ながら、例を見つけることができませんでした。

0 投票する
2 に答える
655 参照

r - R mlr - トレーニング データのサブセットとテスト データ全体 (トレーニング データ全体ではない) から学習曲線を作成しますか?

私がそのような学習曲線を作成しているとしましょう (コードに小さなエラーがある可能性があります。これは単なるサンプルです)。私が望むのは、検証/テストセットを同じサイズに保ちながらトレーニングセットを拡大する、むしろ古典的な学習曲線です。

上記のコードの問題は、実際には学習者がトレーニング データの一部でトレーニングされているにもかかわらず、測定値がトレーニング セット全体auc.train.meanで評価されていることです。これは、私が望む学習曲線ではありません。この尺度で、学習に使用されたトレーニング セットの一部のパフォーマンスを評価したいと思います。たとえば、次のようになります。

http://www.astroml.org/sklearn_tutorial/practical.html#learning-curves

この一文がすべてを説明していると思います。

トレーニング データの小さなサブセットでトレーニングする場合、トレーニング エラーは、完全なトレーニング セットではなく、このサブセットを使用して計算されることに注意してください。

これを達成する方法は?

0 投票する
1 に答える
1015 参照

r - R - mlr陽性クラスが変更されました

R mlr パッケージを使用しているのは、このパッケージで同じメソッドを使用して、複数の分類メソッドと調整パラメーターを使用できるためです。

しかし、それは私のポジティブクラスを変えました。

私のデータセットでは、「HasWriteOff」を予測する必要があります。値は「1」または「2」です。「1」は多数派クラスで、「2」の数よりもはるかに多く、クラスが不均衡であることを意味します。関数で陽性クラスを「2」に設定したのmakeClassifTaskですが、予測後、混同行列を確認したところ、陽性クラスが「1」と表示されます。

これが私のコードです:

ここで陽性クラスを設定します

XGBoost によるトレーニングと予測

ここで混同マトリックスを確認してください

出力

精度 : 0.9954
95% CI : (0.9916, 0.9978) 無情報率 : 0.9784
P 値 [Acc > NIR] : 5.136e-11
カッパ : 0.8913
マクネマー検定 P 値 : 1
感度 : 0.9977 特異
度 : 0.8936
0.9977
Neg Pred 値: 0.8936
有病率: 0.9784
検出率: 0.9761
検出率: 0.9784
バランス精度: 0.9456
「陽性」クラス: 1

ここでわかるように、「ポジティブ」クラスは 1 です。

ここで使用している他の方法を確認しましたが、設定する「正の」パラメーターがありません。

ポジティブクラスをマイノリティクラス「2」として本当に設定する方法を知っていますか? 少数派クラスをポジティブクラスに設定することで、特異度が高くなるかどうかを確認しようとしていますか?