从数据框创建稀疏矩阵

2024-01-05

我正在做一项作业,尝试为 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 分钟即可创建此用户项矩阵,我想得到任何建议


The 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对此的方法。)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从数据框创建稀疏矩阵 的相关文章

  • 在 R 的 for 循环中创建动态命名对象并分配动态值

    我正在尝试创建一套动态命名的新对象 例如 temp2015 使用 for 循环 并存储动态值 具体来说 其他对象的名称 例如 Y2015 和 for 循环中使用的值 例如 2015 在动态命名的新对象中 我不确定为什么下面的代码不起作用 Y
  • R在Windows平台Rstudio上打印data.frames中的UTF-8代码

    当数据框中存在UTF 8字符时 将无法正常显示 例如 以下内容是正确的 gt U6731 1 朱 但是当我将其放入数据框中并打印出来时 它是 gt data frame x U6731 x 1
  • data.table 抛出“找不到对象”错误[重复]

    这个问题在这里已经有答案了 我有一个数据表 library data table mydt lt data table index 1 10 当我在全局环境中尝试它时 我可以让它工作 但当我在调试器中或在包测试中使用它时却无法工作 问题是我
  • Keras model.predict 函数给出输入形状错误

    我已经在 Tensorflow 中实现了通用句子编码器 现在我正在尝试预测句子的类概率 我也将字符串转换为数组 Code if model model type universal classifier basic class probs
  • dplyr:连接中的 NSE (by)

    我很难弄清楚如何使用 dplyr left join 和 NSE 连接两个表 问题是我无法为 by 提供正确的值 我想我现在已经找到了解决方案 但感觉我正在以一种额外复杂的方式来做 因此 如果您知道更简单 更优雅的解决方案 请告诉我 这就是
  • 从数据框中绘制多条平滑线

    我对 R 比较陌生 我正在尝试绘制从 csv 文件加载的数据框 数据由 6 列组成 如下所示 xval col1 col2 col3 col4 col5 第一列 xval 由一系列单调递增的正整数 例如 10 40 60 等 组成 其他列
  • 要在子集中显示的非数字条目的维恩图

    我有以下数据框 SET1 SET2 SET3 par1 par2 par1 par2 par3 par2 par3 par4 par5 我想制作一个维恩图 其中所有这些 parX 元素都显示在各自的子集中 即作为标签 而不仅仅是重叠元素的数
  • 如何根据 ggplot2 中的汇总数据创建堆积条形图

    我正在尝试使用 ggplot 2 创建堆积条形图 我的宽格式数据如下所示 每个单元格中的数字是响应的频率 activity yes no dontknow Social events 27 3 3 Academic skills works
  • 如何为自定义 S3 类实现提取/取子集 ([ [<-, [[ [[<-)] 函数?

    我有一个自定义的 S3 类foo 它在正常的基础上添加了一些自定义行为data frame foo object lt data frame class foo object lt c foo data frame 对于这个类 还应该有一个
  • ggplot:如何限制条形图中的输出,以便仅显示最频繁出现的情况?

    我几个小时以来一直在寻找这个简单的东西 但没有结果 我有一个数据框 其中一列为变量 国家 地区 我想要两件事以下 绘制最常见的国家 地区 最常见的位于顶部 找到部分解决方案EDIT找到完整的解决方案 gt gt 重点问题是根据频率限制条形图
  • 使用点阵个性化 R 上显示的 X 轴值

    我收集了大量包含日期 客户端及其 NFS 使用情况的数据 我正在使用lattice R包进行绘图 正如对超级用户的建议 https superuser com questions 523195 plot custom log data on
  • R 改变构面的顺序

    我正在尝试将方面的顺序从 BA SLG 更改为 SLG BA 我发现了与此类似的问题 但我认为我的解决方案可能不起作用 因为我已经在Excel中汇总了数据 因此 我的数据框可能会有所不同 无论如何 我尝试实现这个但无济于事 df2 lt f
  • 如何像在facet_grid中一样在facet_wrap中定位条带标签

    我想在使用时删除多余的条带标签facet wrap 并用两个变量进行分面 并且都是自由尺度的 例如 这个facet wrap下图的版本 library ggplot2 dt lt txhousing txhousing year in 20
  • 在 Google Colab 上的 R 笔记本中安装 python 库

    我正在尝试在 Google Colab 上的 R 笔记本中安装 python 库 为此我使用 reticulate 包 library reticulate py install pandas 但我得到的结果是这个错误 Error coul
  • 获取包含矩阵行内最大值的列名称,该矩阵在数组内包含单独的最大值

    例如给出 dim1 lt c P PO C T dim2 lt c LL RR R Y dim3 lt c Jerry1 Jerry2 Jerry3 Q lt array 1 48 c 4 4 3 dimnames list dim1 di
  • 条件和分组 mutate dplyr

    假设我有以下每个抽屉库存增加的数据 gt socks year drawer nbr sock total 1990 1 2 1991 1 2 1990 2 3 1991 2 4 1990 3 2 1991 3 1 我想要一个二进制变量来标
  • 将整个包传递给雪簇

    我正在尝试并行化 使用snow parLapply 一些依赖于包 即除snow 调用函数中引用的对象parLapply必须使用显式传递给集群clusterExport 有没有办法将整个包传递到集群 而不必显式命名每个函数 包括用户函数调用的
  • 是否有weighted.median()函数?

    我正在寻找类似形式的东西weighted mean 我通过搜索找到了一些解决方案 这些解决方案写出了整个函数 但希望有一些更用户友好的解决方案 以下软件包都有计算加权中位数的函数 aroma light isotone limma cwhm
  • 将 Excel 文件读入 R 并锁定单元格

    我有一个 Excel 电子表格要读入 R 它受密码保护并锁定了单元格 我可以使用 excel link 导入受密码保护的文件 但我不知道如何解锁 取消保护单元格 excel link 给了我这个错误 gt
  • 如何使用plotmath更新ggplot图例标签

    我正在尝试更新ggplot要使用的图例标签plotmath但是 当我这样做时 它将之前组合的图例分成两部分 通过一个例子可能更容易理解 test data and the default plot gives the correct col

随机推荐

  • subclipse:无法加载默认 SVN 客户端

    使用 eclispe 和 subclipse 插件时 我不断收到此错误 Unable to load default SVN Client 我已经安装了 SVNKit 和 JavaHL 提供程序 但在首选项中找不到它 我正在使用 eclip
  • Amazon SES 中的特殊字符

    我正在使用适用于 PHP 的 AWS 开发工具包 https github com aws aws sdk php https github com aws aws sdk php 使用 Amazon SES 发送电子邮件 这是代码
  • 我们如何使用 C++ Lib Function 或 Windows API 在一个会话中执行多个 cmd 命令?

    在 C 中运行 cmd 命令之前 我想设置一些临时环境变量 该变量会在命令行会话结束时被删除 例如在执行下面的cmd命令之前 我想设置P4PASSWD强制环境变量 sprintf s p4Command 500 C p4 exe print
  • 将切片作为函数参数传递,并修改原始切片

    我知道 Go 中的所有内容都是按值传递的 这意味着如果我给一个函数一个切片 并且该函数使用内置函数附加到该切片append函数 那么原始切片将不会具有附加到函数范围内的值 例如 nums int 1 2 3 func addToNumbs
  • Google 地图 API 2 MapView 未更新

    我在 Android 应用程序中显示 Google Maps API v2 MapView 但奇怪的是它没有以一致的方式正确更新 我正在使用 GPS 更新地图位置 尝试了 LocationManager 和 LocationClient 尽
  • 早期返回与嵌套正 if 语句

    这是一些假设的代码示例 if e KeyCode Keys Enter if this CurrentElement null return false if this CurrentElement this MasterElement r
  • 视频标签中的 YouTube URL

    我正在使用
  • 用于 WorkItemAttribute?

    我注意到 Visual Studio 测试中有一个属性 Microsoft VisualStudio TestTools UnitTesting WorkItemAttribute 可用 我正在使用 VS 2010 Premium 和 TF
  • 为什么在Java算术中,上溢或下溢永远不会抛出异常?

    在Java算术运算期间 JVM不会抛出下溢或溢出异常 很多时候我们会遇到意想不到的结果 并想知道哪里出了问题 而在 NET 技术的情况下 我们有溢出和下溢异常 所以我的问题是 为什么Java被设计成在算术运算期间不抛出这个异常 这可能是多种
  • 如何将 before_filter 应用于 Rails 3.2.11 中每个控制器的每个操作?

    我想验证用户是否在对服务器的每个请求中登录 就像是 before filter verify logged in 我应该将 before filter 放在哪里 以便它适用于所有控制器操作和所有请求 要确保过滤器适用于所有操作 请将其放置在
  • Android JQuery focus() 解决方法

    我正在开发一个 HTML5 移动应用程序 使用常规 jQuery 而不是移动应用程序 它实现了出现在文本区域下方的自定义自动完成列表 用户从列表中选择一个选项 该单词将自动完成 然后用户照常继续输入 问题在于 用户点击文本框外部以从自动完成
  • 自动装配应用程序上下文

    我正在尝试自动装配WebApplicationContext进入一个班级ImageCreatorUtil这是我在 Spring MVC 项目中创建的 在类中执行使用应用程序上下文的方法时 我总是收到 NPE 需要注意的是 该方法是由Appl
  • 在模型中使用 cakephp 组件

    如何在我的模型类之一中使用我在 cakePHP 中创建的组件 这可能吗 如果是这样 请告诉我该怎么做 这是可能的 但很漂亮不好的做法 in a MVC http en wikipedia org wiki Model E2 80 93vie
  • HTML 输出的单元测试?

    这可能是一个愚蠢的问题 但是您是否对 PHP 函数 脚本的 HTML 输出进行单元测试 我尝试将我的 HTML 和 PHP 分开 即 HTML 包含占位符 以及某些重复元素的函数 表格数据 任何类型的循环输出 但我不知道如何去验证这一点 是
  • Firebase iOS 推送通知在首次安装时不起作用

    当我第一次安装并打开应用程序并接受来自 Apple 的通知权限警报时 我从 Firebase 收到以下日志 5 16 0 Firebase InstanceID I IID023004 无法将密钥对的属性更新为首次解锁后可访问 更新 状态
  • 生产/构建中的 Material-UI 渲染错误

    我在构建我的反应应用程序时遇到了很大的问题 我正在使用material ui core v 4 10 2 在正常的反应脚本启动开发服务器上一切正常 但是 当通过 Nginx 或 npm module 构建并提供服务时 渲染无法正常工作 我在
  • 重置等待计时器

    来自 MSDN The 取消等待定时器 http msdn microsoft com en us library ms681985 aspx函数不会改变定时器的信号状态 它会在定时器设置为有信号状态之前停止定时器并取消未完成的 APC 因
  • 类型错误:int() 参数必须是字符串、类似字节的对象或数字,而不是“datetime.datetime”

    我试图为我的所有模型添加 created at 字段 但收到以下错误 TypeError int argument must be a string a bytes like object or a number not datetime
  • twitter bootstrap 3.0 typeahead ajax 示例

    Bootstrap 2 有很多 typeahead ajax 示例 例如这里twitter bootstrap typeahead ajax 示例 https stackoverflow com questions 9232748 twit
  • 从数据框创建稀疏矩阵

    我正在做一项作业 尝试为 Netflix 奖项数据构建协作过滤模型 我使用的数据位于 CSV 文件中 我可以轻松地将其导入到数据框中 现在我需要做的是创建一个稀疏矩阵 其中用户作为行 电影作为列 每个单元格都由相应的评级值填充 当我尝试绘制