Сохраните ml.feature.LabeledPoint в локальный файл libsvm - PullRequest
0 голосов
/ 06 октября 2018

(Почти унаследованная) mllib LabeledPoint сохраняется в файле libsvm следующим образом:

val rddtoprint:RDD[LabeledPoint]= ....

MLUtils.saveAsLibSVMFile(rddtoprint, s"$newPath${File.separator}${fileName }")

Каким будет эквивалентный метод для ml.feature.LabeledPoint?

1 Ответ

0 голосов
/ 06 октября 2018

ОК, так что есть два варианта.1. просто сделай это самГенерация в виде строки и сохранение с использованием стандартного файла IO

  def libSVMFileAsString():String= {

    val sparse0=internalCheckColumnOrder()

    val rows:Array[String]=sparse0.lpData().map { case LabeledPoint(label, features) =>
      val sb = new StringBuilder(label.toString)
      features.foreachActive { case (i, v) =>
        sb += ' '
        sb ++= s"${i + 1}:$v"
      }
      sb.mkString
    }.collect()

    val sbOut:mutable.StringBuilder=new mutable.StringBuilder()
    rows.foreach(r=>sbOut.append(r + "\n"))
    sbOut.toString()
  }

Преобразовать в формат данных и затем сохранить:

def labeledPintsAsDataFrame(): DataFrame =
{
   lpData:RDD[LabeledPoint]=...
   val sqlContext = spark.sqlContext
   import sqlContext.implicits._
   lpData().toDF
}

, а затем

dftoprint.write.format("libsvm").save(s"$newPath${File.separator}${fileName}")
...