Создавайте и манипулируйте массивами и используйте данные с pyspark - PullRequest
0 голосов
/ 15 мая 2018

Я сталкиваюсь с проблемой использования данных теста, созданных вручную в pyspark.mllib.stat.KernelDensity.Существует некоторая проблема / разница между numpy.float и универсальным Python float, который обнаруживается при использовании (некоторые из) pyspark;в частности, СДР, построенные с перерывами numpy.float.

Есть ли способ, которым я могу создать массивы NumPy таким образом, чтобы их элементы были плавающими, а не numpy.float?

import pyspark
import pyspark.mllib.stat
import numpy
sc = pyspark.SparkContext("local", 'test2')
rdd1 = sc.parallelize([1.0, 2.0, 3.0])
rdd2 = sc.parallelize(numpy.arange(1.0, 4.0, 1.0))
(kd1, kd2) = pyspark.mllib.stat.KernelDensity(), pyspark.mllib.stat.KernelDensity()
kd1.setBandwidth(0.2)
kd1.setSample(rdd1)
kd2.setBandwidth(0.2)
kd2.setSample(rdd2)
x = numpy.arange(0, 5.0, 0.1)
y1 = kd1.estimate(x)
y2 = kd2.estimate(x)

^ kd2.estimate терпит неудачу

# can manually convert to "python float"
rdd2 = sc.parallelize([float(x) for x in numpy.arange(1.0, 4.0, 1.0)])
kd2.setSample(rdd2)
y2 = kd2.estimate(x)

1 Ответ

0 голосов
/ 15 мая 2018

Попробуйте заменить:

rdd2 = sc.parallelize(numpy.arange(1.0, 4.0, 1.0))

на

rdd2 = sc.parallelize(numpy.arange(1.0, 4.0, 1.0).tolist())

в первом блоке кода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...