Почему вы получаете неправильный индекс при сохранении данных в формате libsvm с помощью saveaslibsvmfile
Я хочу сохранить данные в формате libsvm с помощью python. Поэтому я решил использовать pyspark, чтобы закончить эту задачу. Но данные, которые я сохранил, были не в формате libsvm. Вот мой код.
from pyspark.mllib.util import MLUtils from pyspark.mllib.regression import LabeledPoint d = c.map(lambda line: LabeledPoint(line[0],[line[1:]])) # c is rdd format MLUtils.saveAsLibSVMFile(d, "D://spark-warehouse/part1")
Когда я запускаю код print (d.take(3)), он показывает, как выглядит формат LabeledPoint
[LabeledPoint(-0.05643994211287995, [0.0142684401451,-0.0072049689441,-0.929159510172,-0.893124442121,-0.996100725507]), LabeledPoint(-0.02315484804630974, [0.0408706166868,-0.00372670807453,-0.891585462256,-0.839681870708,-0.96168588986]), LabeledPoint(0.03039073806078152, [0.0577992744861,-0.00621118012422,-0.898020043313,-0.847917899172,-0.968368717236])]
Однако, когда я тестировал свои сохраненные данные, они не были в формате libsvm .Он показывает неправильную метку, которая имеет только метку 1.
''.join(sorted(input(glob("D://spark-warehouse/part2" + "/part-0000*")))). -0.05643994211287995 1:[ 0.01426844 -0.00720497 -0.92915951 -0.89312444 -0.99610073]\n-0.02315484804630974 1:[ 0.04087062 -0.00372671 -0.89158546 -0.83968187 -0.96168589]\n0.03039073806078152 1:[ 0.05779927 -0.00621118 -0.89802004 -0.8479179 -0.96836872]\n
Который должен быть в правильном формате, как показано ниже.
-0.05643994211287995 1:0.01426844 2:-0.00720497 3:-0.92915951 4:-0.89312444 5:-0.99610073]\n ...
И мой питон версии 3.5.2 и pyspark версия 2.0.1. Я искал в течение долгого времени в сети. Но это бесполезно. Пожалуйста, помогите или попробуйте дать некоторые идеи, как этого достичь.
Примечание: Я хочу сделать SVR, поэтому мои индексы не относятся к типу int.
Что я уже пробовал:
Я уже давно ищу в сети. Но это бесполезно. Пожалуйста, помогите или попробуйте дать некоторые идеи, как этого достичь.