データフレームからスパース行列を作成する

user37940

Netflixの賞金データの協調フィルタリングモデルを構築しようとしている割り当てを行っています。私が使用しているデータはCSVファイルにあり、データフレームに簡単にインポートできます。次に、行としてのユーザーと列としての映画で構成されるスパースマトリックスを作成し、各セルに対応する評価値を入力します。データフレームの値をマップしようとすると、データフレームの各行に対してループを実行する必要があります。これは、Rで多くの時間がかかりますが、誰かがより良いアプローチを提案できますか。サンプルコードとデータは次のとおりです。

buildUserMovieMatrix <- function(trainingData)
{
  UIMatrix <- Matrix(0, nrow = max(trainingData$UserID), ncol = max(trainingData$MovieID), sparse = T);
  for(i in 1:nrow(trainingData))
  {
    UIMatrix[trainingData$UserID[i], trainingData$MovieID[i]] = trainingData$Rating[i];
  }
  return(UIMatrix);
}

スパース行列の作成元のデータフレーム内のデータのサンプル:

    MovieID UserID  Rating
1       1      2       3
2       2      3       3
3       2      4       4
4       2      6       3
5       2      7       3

したがって、最終的には次のようなものが必要です。列は映画IDであり、行はユーザーIDです。

    1   2   3   4   5   6   7
1   0   0   0   0   0   0   0
2   3   0   0   0   0   0   0
3   0   3   0   0   0   0   0
4   0   4   0   0   0   0   0
5   0   0   0   0   0   0   0
6   0   3   0   0   0   0   0
7   0   3   0   0   0   0   0

したがって、解釈は次のようになります。ユーザー2は映画1を3つ星と評価し、ユーザー3は映画2を3つ星と評価し、他のユーザーと映画についても同様です。私のデータフレームには約8500000行があり、コードがこのユーザーアイテムマトリックスを作成するのに約30〜45分かかります。提案があれば教えてください。

川の部分

Matrixパッケージには、データのあなたのタイプのために特別に作られたコンストラクタがあります。

library(Matrix)
UIMatrix <- sparseMatrix(i = trainingData$UserID,
                         j = trainingData$MovieID,
                         x = trainingData$Rating)

それ以外の場合は、[マトリックスインデックスと呼ばれる関数の優れた機能について知りたいと思うかもしれませんあなたが試した可能性があります:

buildUserMovieMatrix <- function(trainingData) {
  UIMatrix <- Matrix(0, nrow = max(trainingData$UserID),
                        ncol = max(trainingData$MovieID), sparse = TRUE);
  UIMatrix[cbind(trainingData$UserID,
                 trainingData$MovieID)] <- trainingData$Rating;
  return(UIMatrix);
}

(しかし、私は間違いなくsparseMatrixこれよりアプローチをお勧めします。)

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

データフレームからのXGBスパース行列

分類Dev

Python:リストからパンダデータフレームを作成する

分類Dev

Python:リストからパンダデータフレームを作成する

分類Dev

Python:リストからパンダデータフレームを作成する

分類Dev

リストからデータフレームを作成する

分類Dev

リストからデータフレームを作成する

分類Dev

データフレームからリストを作成する

分類Dev

文字列として列名を持つデータフレームからPythonでスパース行列を作成する方法

分類Dev

NLTKで動作するパンダデータフレームからコーパスを作成する方法

分類Dev

パンダのデータフレームからカスタムヒートマップを作成する

分類Dev

rデータフレームの列から隣接行列を作成する

分類Dev

rデータフレームの列から隣接行列を作成する

分類Dev

Rのデータフレームから接続行列を作成する

分類Dev

R のデータ フレームから因子の行列を作成する

分類Dev

2 つのデータ フレームから -1, 0, 1 行列を作成する

分類Dev

pandasデータフレームからカスタムjsonを作成する方法

分類Dev

別のデータフレームとリストからデータフレームを作成する

分類Dev

リストのリストからデータフレームを作成する

分類Dev

applyを使用して、Rのデータフレームから隣接行列のリストを作成します

分類Dev

同様のインデックスを持つ他のデータフレームの列からパンダデータフレームを作成する

分類Dev

アイテムのリストから特定の形状のパンダデータフレームを作成する

分類Dev

PythonのMySQLテーブルからデータフレームのパンダリストを作成する

分類Dev

データフレームパンダからマルチインデックスを作成する

分類Dev

ディクトリストの要素からパンダデータフレームを作成する

分類Dev

データフレーム行列から列を保持する

分類Dev

パンダデータフレームからタプルの複数のリストを作成する方法

分類Dev

スパークデータフレームから特定の行を取得する

分類Dev

スパークデータフレームから特定の行を取得する

分類Dev

スパークデータフレームから特定の行を取得する

Related 関連記事

  1. 1

    データフレームからのXGBスパース行列

  2. 2

    Python:リストからパンダデータフレームを作成する

  3. 3

    Python:リストからパンダデータフレームを作成する

  4. 4

    Python:リストからパンダデータフレームを作成する

  5. 5

    リストからデータフレームを作成する

  6. 6

    リストからデータフレームを作成する

  7. 7

    データフレームからリストを作成する

  8. 8

    文字列として列名を持つデータフレームからPythonでスパース行列を作成する方法

  9. 9

    NLTKで動作するパンダデータフレームからコーパスを作成する方法

  10. 10

    パンダのデータフレームからカスタムヒートマップを作成する

  11. 11

    rデータフレームの列から隣接行列を作成する

  12. 12

    rデータフレームの列から隣接行列を作成する

  13. 13

    Rのデータフレームから接続行列を作成する

  14. 14

    R のデータ フレームから因子の行列を作成する

  15. 15

    2 つのデータ フレームから -1, 0, 1 行列を作成する

  16. 16

    pandasデータフレームからカスタムjsonを作成する方法

  17. 17

    別のデータフレームとリストからデータフレームを作成する

  18. 18

    リストのリストからデータフレームを作成する

  19. 19

    applyを使用して、Rのデータフレームから隣接行列のリストを作成します

  20. 20

    同様のインデックスを持つ他のデータフレームの列からパンダデータフレームを作成する

  21. 21

    アイテムのリストから特定の形状のパンダデータフレームを作成する

  22. 22

    PythonのMySQLテーブルからデータフレームのパンダリストを作成する

  23. 23

    データフレームパンダからマルチインデックスを作成する

  24. 24

    ディクトリストの要素からパンダデータフレームを作成する

  25. 25

    データフレーム行列から列を保持する

  26. 26

    パンダデータフレームからタプルの複数のリストを作成する方法

  27. 27

    スパークデータフレームから特定の行を取得する

  28. 28

    スパークデータフレームから特定の行を取得する

  29. 29

    スパークデータフレームから特定の行を取得する

ホットタグ

アーカイブ