線形回帰をRustを用いて実装したいと考えております。最尤推定の計算の中で逆行列を計算する必要があります。そこで、rust-ndarrayを用いて実装をしていました。
ドキュメントを読んでみても、詳しい書き方がわからずとりあえず以下のように実行してみました。
rust
1use ndarray::prelude::*; 2use ndarray::Array; 3use ndarray_rand::RandomExt; 4use ndarray_rand::rand_disrt::Uniform; 5use ndarray_linalg; 6 7fn main() { // サンプルコード 8 let Phi = Array::<f64>::random((3, 2, 4), Uniform::new(0.,10)); 9 let Phi_inv = Array.Inverse(); 10}
上記のコードでは以下のエラーを得ました。
Compiling tensor v0.1.0 (/Users/kondouakira/Code/tensor) warning: unused import: `ndarray_linalg::*` --> src/main.rs:5:5 | 5 | use ndarray_linalg::*; | ^^^^^^^^^^^^^^^^^ | = note: `#[warn(unused_imports)]` on by default error[E0599]: no method named `Inverse` found for struct `ArrayBase<OwnedRepr<f64>, Dim<[usize; 3]>>` in the current scope --> src/main.rs:13:23 | 13 | let out_inv = out.Inverse(); | ^^^^^^^ method not found in `ArrayBase<OwnedRepr<f64>, Dim<[usize; 3]>>` error: aborting due to previous error; 1 warning emitted For more information about this error, try `rustc --explain E0599`. error: could not compile `tensor` To learn more, run the command again with --verbose.
公式のドキュメントには、ArrayBaseのトレイトとして実装されていると書いてあったので、このように書いたのですが、エラーメッセージにはArrayBaseにはInverseのメソッドは定義されていないと記載されていました。
どのように書けば逆行列を計算できますか?
ご回答の程よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/12/21 16:55 編集
2020/12/21 16:57
2020/12/21 17:01
2021/01/01 04:00 編集
2021/01/01 04:24