R - ユークリッド距離の計算を簡単にする方法
2022-02-12 04:11:01
これまでのユークリッド距離の計算では、直接
dist()
メソッドを使用します。しかし、実際には、大量のデータを扱う場合、この方法は切り捨てられ、実行に時間がかかる。
Baiduは、非常にハイレベルな方法と感じられるものを考え出しました。
ユークリッド距離の高速計算 [douban
内部には演算メソッドが用意されており、以下のようなコードになっています。
mat <- matrix(runif(2000*1000),nrow=2000)
system.time({
smat <- apply(mat, 1, crossprod)
mat1 <- matrix(smat, nrow=2000, ncol=2000)
mat3 <- tcrossprod(mat)
mat4 <- mat1 + t(mat1) - 2*mat3
diag(mat4) <- 0
mat5 <- sqrt(mat4)
})
system.time(mat7 <- as.matrix(dist(mat))))
#print(mat7[1:6, 1:6])
この方法で、400万個のデータを約22秒で計算することができます
この方法を使って、自分のデータのデバッグを始めてみてください。
デバッグの際に重要なのは
mat4
この行列。は、まず
mat1
と
t(mat1)
で足し算と引き算ができること、次に、その和が
mat3
さもなければ、両方のエラーが報告されます: 非整合型配列
借金のために会いましょう!
関連
-
二項演算子への非数値引数を報告するR言語エラー
-
Rでファイルを読み込む際に、そのようなファイルまたはディレクトリが見つかりません。
-
R言語のエラーメッセージと関連する解決策
-
R: 環境と変数のスコープ問題
-
R - よくあるエラーとその原因 - 注意事項
-
[解決策】 plot.new() のエラー:図の余白が大きすぎる。
-
ggplot2 からグリッドと背景色を削除する。
-
SocketTimeoutExceptionです。読み込みがタイムアウトしました
-
データボックス内の行/列の削除/追加を行うR言語
-
[R] is.data.frame(x) のエラー : (リスト) オブジェクトを 'double' 型に強制できない。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
RStudio の "plot.new() : figure margins too large" 問題を解決する。
-
R 描画エラー plot.new() : 図形の余白が大きすぎる
-
R言語です。「接続を開くことができません」解決策
-
8.2 カマグラ(No.31〜No.40)
-
R: hclust(d, method = method)でのエラー : 外部関数呼び出しは NA/NaN/Inf(arg10) を持つことができません。
-
R LanguageError in hist.default() : 'x' は数値でなければなりません.
-
R言語エラー:図の余白が大きすぎる 解決方法
-
R plot.new() のエラー : 図形の余白が大きすぎる
-
Rでエラー:単項演算子への引数が無効
-
R read.table Error:埋め込まれたヌルが含まれているようです。