【问题标题】:spark: convert dataframe to svm labeled pointspark:将数据帧转换为 svm 标记点
【发布时间】:2017-10-04 23:56:30
【问题描述】:

当提到 spark ml/mllib 文档时,它们都是从 svm 存储的示例开始的。这真的让我很沮丧,因为似乎没有一种直接的方法可以在不先存储它的情况下从标准 RDD[Row] 或 Dataframe(取自“表”选择)到这个符号。

这只是在处理 3 个左右的功能时带来的不便,但是当您将其扩展到大量功能时,这意味着您将进行大量的输入和搜索。

我最终得到了这样的结果:(其中“train”是数据集的随机拆分,其中包含存储在表中的特征)

val trainLp = train.map(row => LabeledPoint(row.getInt(0).toDouble, Vectors.dense(row(8).asInstanceOf[Int].toDouble,row(9).asInstanceOf[Int].toDouble,row(10).asInstanceOf[Int].toDouble,row(11).asInstanceOf[Int].toDouble,row(12).asInstanceOf[Int].toDouble,row(13).asInstanceOf[Int].toDouble,row(14).asInstanceOf[Int].toDouble,row(15).asInstanceOf[Int].toDouble,row(18).asInstanceOf[Int].toDouble,row(21).asInstanceOf[Int].toDouble,row(27).asInstanceOf[Int].toDouble,row(28).asInstanceOf[Int].toDouble,row(29).asInstanceOf[Int].toDouble,row(30).asInstanceOf[Int].toDouble,row(31).asInstanceOf[Double],row(32).asInstanceOf[Double],row(33).asInstanceOf[Double],row(34).asInstanceOf[Double],row(35).asInstanceOf[Double],row(36).asInstanceOf[Double],row(37).asInstanceOf[Double],row(38).asInstanceOf[Double],row(39).asInstanceOf[Double],row(40).asInstanceOf[Double],row(41).asInstanceOf[Double],row(42).asInstanceOf[Double],row(43).asInstanceOf[Double])))

要维护这是一场噩梦,因为这些行往往会经常更改。

而这里我只处于获取标记点的阶段,我什至还没有处于这些数据的 svm 存储版本。

我在这里遗漏了什么可能会挽救我几天的痛苦?

编辑:

我使用称为 vectorassembler 的东西来构建我的向量,离解决方案更近了一步

【问题讨论】:

  • 我有完全相同的令人沮丧的问题,我正在使用 pspark

标签: scala apache-spark apache-spark-mllib


【解决方案1】:

通常,CSV 文件是未经过滤的原始信息源。它们通常会提供原始信息来源。

为了构建模型,您通常需要在构建模型之前经历数据清理、数据准备、数据整理(可能还有更多“数据 x”措辞)阶段。这个阶段通常需要大量的模型构建,并且通常需要探索数据。通常,转换和特征选择(和创建)的过程发生在原始数据和构建模型的数据之间。

如果您的 CSV 文件不需要任何这些初步阶段 - 对您有好处! 您始终可以创建配置文件来跟踪构建模型的某些列或列索引。

如果您的 DataFrame 来自“选择”,我想您可以做些什么来提高易读性和可维护性是使用列名而不是索引号。

df.select($"my_col_1", $"my_col_2", .. )

然后通过

操作
row.getAs[String]("my_col_1")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-09-27
    • 2019-01-16
    • 2020-07-24
    • 1970-01-01
    • 1970-01-01
    • 2017-07-10
    • 2017-12-30
    相关资源
    最近更新 更多