相关疑难解决方法(0)

从数据框创建稀疏矩阵

我正在做一项任务,我正在尝试为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);
}
Run Code Online (Sandbox Code Playgroud)

从中创建稀疏矩阵的数据框中的数据样本:

    MovieID UserID  Rating
1       1      2       3
2       2      3       3
3       2      4       4
4       2      6       3
5       2      7       3
Run Code Online (Sandbox Code Playgroud)

所以最后我想要这样的东西:列是电影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 …
Run Code Online (Sandbox Code Playgroud)

r machine-learning sparse-matrix

15
推荐指数
2
解决办法
1万
查看次数

如何从 Scala 中的 DataFrame 在 Spark 中创建分布式稀疏矩阵

问题

请帮助找到从 DataFrame 中的(用户、特征、值)记录创建分布式矩阵的方法,其中特征及其值存储在列中。

以下是数据摘录,但用户数量和功能较多,并且并非所有功能都经过用户测试。因此,许多特征值都是空的并且被归为 0。

例如,血液测试可能以血糖水平胆固醇水平等为特征。如果这些级别不可接受,则将值设置为 1。但并非所有功能都会针对用户(或患者)进行测试。

+----+-------+-----+
|user|feature|value|
+----+-------+-----+
|  14|      0|    1|
|  14|    222|    1|
|  14|    200|    1|
|  22|      0|    1|
|  22|     32|    1|
|  22|    147|    1|
|  22|    279|    1|
|  22|    330|    1|
|  22|    363|    1|
|  22|    162|    1|
|  22|    811|    1|
|  22|    290|    1|
|  22|    335|    1|
|  22|    681|    1|
|  22|    786|    1|
|  22|    789|    1|
| …
Run Code Online (Sandbox Code Playgroud)

scala sparse-matrix apache-spark apache-spark-mllib

5
推荐指数
1
解决办法
3562
查看次数