当前位置: 首页 > 知识库问答 >
问题:

将本地向量转换为RDD[向量]

谷彦君
2023-03-14

我是Spark和Scala的新手,我正在尝试阅读它在MLlib上的文档。

关于 http://spark.apache.org/docs/1.4.0/mllib-data-types.html 的教程,

import org.apache.spark.mllib.linalg.Vector
import org.apache.spark.mllib.linalg.distributed.RowMatrix

val rows: RDD[Vector] = ... // an RDD of local vectors
// Create a RowMatrix from an RDD[Vector].
val mat: RowMatrix = new RowMatrix(rows)

// Get its size.
val m = mat.numRows()
val n = mat.numCols()

不显示如何从本地向量列表构造RDD[Vector](可变行)。

例如,我已经在火花壳中执行(作为我探索的一部分)

val v0: Vector = Vectors.dense(1.0, 0.0, 3.0)
val v1: Vector = Vectors.sparse(3, Array(1), Array(2.5))
val v2: Vector = Vectors.sparse(3, Seq((0, 1.5),(1, 1.8)))

如果“合并”,它将看起来像这个矩阵

1.0  0.0  3.0
0.0  2.5  0.0
1.5  1.8  0.0

那么,如何将矢量 v0、v1v2 转换为行呢

共有1个答案

沈宏朗
2023-03-14

通过使用并行化序列的Spark Context属性,我们可以实现您想要的东西,因为您已经创建了向量,现在您需要按顺序将它们按顺序并按下面给出的过程进行并行化。

import org.apache.spark.mllib.linalg.Vectors
import org.apache.spark.mllib.linalg.distributed.RowMatrix

val v0 = Vectors.dense(1.0, 0.0, 3.0)
val v1 = Vectors.sparse(3, Array(1), Array(2.5))
val v2 = Vectors.sparse(3, Seq((0, 1.5), (1, 1.8)))

val rows = sc.parallelize(Seq(v0, v1, v2))

val mat: RowMatrix = new RowMatrix(rows)

// Get its size.
val m = mat.numRows()
val n = mat.numCols()
 类似资料:
  • 问题内容: 假设我有一个形状为(1,256)的行向量。我想将其转换为形状为(256,1)的列向量。您在Numpy中会如何做? 问题答案: 您可以使用 转置 操作来执行此操作: 例: 请注意,原始数组仍将保持不变。转置操作只会复制并转置它。 如果输入阵列是相当1D中,则可以 促进 通过引入新的(singleton)的轴作为所述第二尺寸数组的列向量。下面是一个示例: 对于一维情况,还有另一个选择是使用

  • 问题内容: 将Object数组转换为Vector的最佳方法是什么? JDE <1.5 this.elements是一个Object [] 谢谢,雷特 我应该澄清我的问题 我的目标平台是黑莓。 不支持收藏。Array.asList()也不是:// 全班 问题答案: 现在,好像您要复制两次数据,但实际上并非如此。您确实得到了一个小的临时对象(来自的),但这提供了阵列的视图。而不是复制它,读和写操作将遍

  • 我在C++中创建了一个将数字转换为数组的函数。由于这一创建,我还创建了将数组转换回数字的相反部分: 问题就在这里。当我在main中使用以下代码运行时: 我得到了240000,而我应该得到235626。我找了很久都找不到代码中的逻辑错误。有人知道怎么回事吗?

  • 我有一个整数向量: 考虑到将始终为偶数。 我只是想把相邻的元素转换成一对,像这样: i、 两个相邻的元件连接成一对。 我可以使用什么STL算法轻松实现这一点?有没有可能通过一些标准算法来实现这一点? 当然,我可以很容易地编写一个旧的索引for循环来实现这一点。但我想知道,使用基于范围的for循环或任何其他STL算法(如等)最简单的解决方案是什么样的。

  • 问题内容: 我正在使用Java本机功能- 在C ++中,我的本机函数- 我的问题是如何将resultList(向量类型)转换为jobject类型? 问题答案: 您必须在C ++中为ArrayList创建包装器。就像是: 有关更多信息,请参见: http://download.oracle.com/javase/1.4.2/docs/guide/jni/spec/functions.html

  • 有没有办法将数据帧转换为向量?例如 预期产出