Я сталкиваюсь с проблемой использования данных теста, созданных вручную в 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)