問題タブ [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.
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' があります
どうすればこれを修正できますか?
r - MLR のリサンプリング エラー
私のタスクは、回帰タスクを階層化することです。データは次のようになります
f1,f2,f3,... m1,m2...,p1,p2,p3...
ここで、f_i は数値で、他の列は係数と整数です。
次のコマンドを実行した後、自己定義メジャー m1 を定義します。
というエラーが表示されました
入力データフレームを数値データのみを含むようにサブセット化すると、そのようなエラーは発生しません。実際、数値データのみが予測に役立ちますが、トレーニングとテストの分割で階層化するには他の列が必要です。誰が何が悪いのか知っていますか?
r - mlrパッケージのmakeClassifTask()にブロック要因を含めるにはどうすればよいですか?
一部の分類タスクでは、mlr
パッケージを使用して、次のdata.frame
ようなものを処理する必要があります。
値を同じ にまとめてモデルを相互検証する必要がありますID
。チュートリアルから次のことがわかります。
https://mlr-org.github.io/mlr-tutorial/release/html/task/index.html#さらに設定
タスクにブロック要因を含めることができます。これは、いくつかの観測値が「一緒に属している」ことを示しており、リサンプリングのためにデータをトレーニング セットとテスト セットに分割するときに分離すべきではありません。
問題は、このブロッキング要因をどのように含めることができるmakeClassifTask
かです。
残念ながら、例を見つけることができませんでした。
r - R mlr - トレーニング データのサブセットとテスト データ全体 (トレーニング データ全体ではない) から学習曲線を作成しますか?
私がそのような学習曲線を作成しているとしましょう (コードに小さなエラーがある可能性があります。これは単なるサンプルです)。私が望むのは、検証/テストセットを同じサイズに保ちながらトレーニングセットを拡大する、むしろ古典的な学習曲線です。
上記のコードの問題は、実際には学習者がトレーニング データの一部でトレーニングされているにもかかわらず、測定値がトレーニング セット全体auc.train.mean
で評価されていることです。これは、私が望む学習曲線ではありません。この尺度で、学習に使用されたトレーニング セットの一部のパフォーマンスを評価したいと思います。たとえば、次のようになります。
http://www.astroml.org/sklearn_tutorial/practical.html#learning-curves
この一文がすべてを説明していると思います。
トレーニング データの小さなサブセットでトレーニングする場合、トレーニング エラーは、完全なトレーニング セットではなく、このサブセットを使用して計算されることに注意してください。
これを達成する方法は?
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」として本当に設定する方法を知っていますか? 少数派クラスをポジティブクラスに設定することで、特異度が高くなるかどうかを確認しようとしていますか?