問題タブ [glmnet]
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 - S3とクラスの順序
S3 メソッドがどのように呼び出されるかについてのドキュメントを理解するのにいつも苦労していましたが、今回はそれが私を悩ませています。
複数の質問をすることを前もってお詫びしますが、それらはすべて密接に関連しています。複雑な一連の関数の中心部で、私は多くのglmnet
フィット、特にロジスティック フィットを作成します。現在、glmnet
ドキュメントでは、その戻り値が "glmnet" と (ロジスティック回帰の場合) "lognet" の両方のクラスを持つように指定されています。実際、これらはこの順序で指定されます。
しかし、 の実装の最後を見ると、のクラスを「lognet」に設定glmnet
する (内部関数) の呼び出しの直後に、(変数の)リターンの直前に次のコード行が表示されます。lognet
fit
fit
このことから、クラスの順序は実際には「lognet」、「glmnet」であると結論付けます。
残念ながら、私が持っていたフィット感は(ドキュメントが示唆するように):
これに関する問題は、特に S3 メソッドがディスパッチされる方法predict
です。のコードは次のpredict.lognet
とおりです。
理由を説明するコメントを追加しました。これmyfit
で、新しい datamatrixmydata
とを使用して predict を呼び出すとtype="response"
、次のようになります。
、私は、ドキュメントに従って、予測された確率を取得しませんが、線形結合を取得します。これは、まさにpredict.glmnet
すぐに呼び出した結果です。
次のように、クラスの順序を逆にしてみました。
そして、もう一度予測呼び出しを実行します。見よ、うまくいきました! 確率はわかります。
それで、ここにいくつかの質問があります:
- S3メソッドはクラスの出現順にディスパッチされることを「学んだ」のは正しいですか?
- のコードが
glmnet
正しいディスパッチのために間違った順序を引き起こすと 仮定するのは正しいpredict
ですか? - 私のコードでは、私の知る限り、クラスを明示的に/目に見えるように操作するものは何もありません。順序が変更される原因は何ですか?
完全を期すために、ここにいくつかのサンプルコードを示します(私は今自分でやっているように):
生成されたデータに応じて、違いは多かれ少なかれ明らかです (私の実際のデータセットでは、いわゆる確率に負の値があることに気付きました。これが問題を解決した方法です) が、実際には違いが見られるはずです。
ご意見ありがとうございます。
編集:
私は恐ろしい真実を発見しました: どちらの順序も glmnet 1.5.2 (実際のコードを実行したサーバー上に存在するため、クラスの順序が逆になっている) で機能しましたが、1.6 のコードでは次の順序が必要です。 「lognet」、「glmnet」になります。1.7で何が起こるかはまだ確認していません。
情報学の基本を思い出させてくれた@Aaronに感謝します(「他のすべてが失敗した場合は、再起動する」:「バージョンを確認する」以外に)。私は、統計学習の神々によるパッケージはこの種のエラーから保護されると誤って想定していました)、そして S3 の仕組みを再構築したことを確認してくれた @Gavin に感謝します。
r - glmnetと2つのクラスを使用している場合、caretのtrain関数でエラーが発生しました
次のコードブロックは失敗しますが、理由はわかりません。
次のエラーが発生します。
正常に動作するなど、別のモデルにサブサブする場合glm
。3つのクラスを使用すると、、TrainClasses <- iris[,5]
も正常に機能します。
glmnetメソッドが失敗する原因となっている2つのクラスはどうですか?
これは、Windows上のRバージョン2.14.0、caretバージョン5.09-006です。同じエラーが私のMacとLinuxで発生します。
r - R glmnet : "(リスト) オブジェクトを型 'double' に強制することはできません"
glmnet
データセットでパッケージを使用しようとしています。cv.glmnet()
のラムダ値を取得するために使用していますglmnet()
。データセットとエラー メッセージは次のとおりです。
列 1、2、7、12 をそのまま除外しています: id 列、応答列、NA を含み、NA を含みます。どんな提案も素晴らしいでしょう。
r - R glmnet as.matrix() エラー メッセージ
glmnet
データセットでパッケージを使用しようとしています。cv.glmnet()
のラムダ値を取得するために使用していますglmnet()
。列 1、2、7、12 をそのまま除外しています: id 列、応答列、NA を含み、NA を含みます。
データセットとエラー メッセージは次のとおりです。
助言がありますか?
r - NAを処理できるRパッケージ/モデル
NAのインスタンスがある行または列を無視するのではなく、NAを処理できるRパッケージまたは機械学習モデル/アルゴリズム( 、、、などrandomForest
)を探しています。私は帰属するつもりはありません。助言がありますか?glmnet
gbdt
r - R glmnet オブジェクトから予測クラスを取得する
R で glmnet を使用して単純なマルチクラス ロジスティック回帰モデルを構築しようとしています。ただし、テスト データを予測して分割表を取得しようとすると、エラーが発生します。サンプルセッションを以下に再現します。
どんな助けでも大歓迎です。ここでR noob。
ありがとう。
r - Windowsでglmnetのコンパイルに失敗しました
RパッケージのglmnetはWindows用のバイナリを提供していないため、OSwin764ビットでコンパイルする必要があります。どのように私はこのエラーメッセージを受け取りました:
また、Windows XP 32ビットでコンパイルしようとしましたが、「パッケージglmnetの構成に失敗しました」というエラーメッセージが表示されます。
誰かがWindowsでglmnetをコンパイルすることに成功しましたか?
r - R glmnet family=0-1以外の二項予測値
0〜1の値を予測する、正則化されたロジスティック回帰のパッケージをRで見つけようとしていますが、パッケージを試した後、lars
パッケージを試したので、あまり運がありませんでしたglmnet
。
以下は、glmnetパッケージのリファレンスマニュアルの例のコードですが、出力がわかりません。
出力がすべて0-1の範囲内にない理由がわかりません。
私はここで何かを誤解していますか?
正則化されたロジスティック回帰のための使いやすいパッケージを誰かが推奨できますか?
ありがとう。
r - Rのglmnetの係数名の解釈
次のコードを使用して、glmnet を使用して、5 つの機能のセットに基づいて確率を予測しています。別の(Rではない)プログラムで使用する必要があるため、実際の式が必要です。
結果の係数の名前には 5 つの位置があり (これは各機能の 1 つだと思います)、それぞれの位置は 0 から 3 の間の数値です (これは多項式の次数だと思います)。しかし、式を正確に再構築する方法についてはまだ混乱しています。
たとえば、次のとおりです。
機能を A、B、C、D、E と呼びましょう。これは式をどのように解釈するべきですか?
それが正しくない場合、どのように解釈すればよいですか?
次の質問と回答を見ましたが、これらのタイプの係数名には対応していませんでした。
よろしくお願いします。
r - glmnet/scikit 学習係数行列サイズ
scikit Learnでは、ロジスティック回帰モデルの係数coef_
は次元[n_classes-1、n_features]の配列です。
glmnet
係数はfit$beta
同様の配列ではありません。
例えば:
寸法xMatrix
- 63231 X 1223 (トレーニング サンプル数 X 特徴数)
yMatrix
- 63231 X 1の次元(トレーニング サンプルの数 X 各サンプルの期待される出力値)。45の異なるクラスがあります。したがって、出力はそれらのいずれかです。
出力係数の次元 (私が理解していることから) = 1223 X 45 (機能の数 X クラスの数)
私はscikit Learnで正しく理解していますが、結果はglmnet
異なります
これが私のglmnet
コードです:
1223 X 45 ではなく 1223 X 86 になるのはなぜですか?