私はRの因子の行列を持ち、各因子のすべての可能なレベルについて、ダミー変数0-1の行列に変換したいと考えています。R:疎行列変換
しかし、この「ダミー」マトリックスは非常に大きく(91690x16593)非常にまばらです。私はそれを疎な行列に格納する必要があります。それ以外の場合は、12GBのラムに収まりません。
library(Matrix)
X_factors <- data.frame(lapply(my_matrix, as.factor))
#encode factor data in a sparse matrix
X <- sparse.model.matrix(~.-1, data = X_factors)
しかし、私はR e1071中のパッケージを使用し、最終的にwrite.matrix.csr()
とフォーマットをLIBSVMするために、この行列を保存する:現在、私は次のコードを使用していますが、それは非常に正常に動作し、秒かかり
最初に私のスパース行列をSparseM形式に変換する必要があります。
私が実行しようとしました:
library(SparseM)
X2 <- as.matrix.csr(X)
が、それは非常に迅速に私のRAMを満たし、最終的にクラッシュし、R。私は内部的にはas.matrix.csr
が最初に疎な行列を私のコンピュータのメモリに収まらない密行列に変換すると考えています。
私の他の代替方法は、スパース行列をSparseM形式で直接作成することです。
私はas.matrix.csr(X_factors)
を試しましたが、要素のデータフレームを受け入れません。
SparseMパッケージにsparse.model.matrix(~.-1, data = X_factors)
と同等のものがありますか?私はドキュメントを検索しましたが、私は見つけませんでした。
これで、2つの行列が同じであることを確認できます。迅速な回答ありがとうございます。 –