【问题标题】:mllib KernelDensity errormllib 内核密度错误
【发布时间】:2018-01-17 15:38:43
【问题描述】:

我正在尝试以这种方式使用 pyspark.mllib.stat.KernelDensity:

data = sc.parallelize([0, 1, 2, 2, 1, 1, 1, 1, 1, 2, 0, 0])
kd = KernelDensity()
kd.setSample(data)
kd.setBandwidth(3)
densities = kd.estimate([-1.0, 2.0, 5.0])

但最终得到这个错误:

----------------------------------- ---------------------------- Py4JError Traceback(最近调用 最后)在() 8 9 # 查找给定值的密度估计 ---> 10 密度 = kd.estimate([-1.0, 2.0, 5.0])

/home/user10215193/anaconda3/lib/python3.6/site-packages/pyspark/mllib/stat/KernelDensity.py 在估计(自我,点) 56 分 = 列表(分) 57 密度 = callMLlibFunc( ---> 58“estimateKernelDensity”,self._sample,self._bandwidth,点) 59 返回 np.asarray(密度)

/home/user10215193/anaconda3/lib/python3.6/site-packages/pyspark/mllib/common.py 在 callMLlibFunc(name, *args) 129 api = getattr(sc._jvm.PythonMLLibAPI(),名称) 130打印(API) --> 131 返回调用JavaFunc(sc, api, *args) 132 133

/home/user10215193/anaconda3/lib/python3.6/site-packages/pyspark/mllib/common.py 在 callJavaFunc(sc, func, *args) 121 """调用Java函数""" 122 args = [_py2java(sc, a) for a in args] --> 123 返回 _java2py(sc, func(*args)) 124 125

/home/user10215193/anaconda3/lib/python3.6/site-packages/py4j/java_gateway.py 在 调用(self, *args) 1131 回答 = self.gateway_client.send_command(command) 1132 return_value = get_return_value( -> 1133 answer, self.gateway_client, self.target_id, self.name) 1134 1135 for temp_args in temp_args:

/home/user10215193/anaconda3/lib/python3.6/site-packages/py4j/protocol.py 在 get_return_value(answer, gateway_client, target_id, name) 第321章 322 “调用 {0}{1}{2} 时出错。跟踪:\n{3}\n”。 --> 323 格式(target_id, ".", name, value)) 324 其他: 第325章

Py4JError:调用 o19.estimateKernelDensity 时出错。 跟踪:py4j.Py4JException:方法估计内核密度([类 org.apache.spark.api.java.JavaRDD,类 java.lang.Integer,类 java.util.ArrayList]) 不存在于 py4j.reflection.ReflectionEngine.getMethod(ReflectionEngine.java:318) 在 py4j.reflection.ReflectionEngine.getMethod(ReflectionEngine.java:326) 在 py4j.Gateway.invoke(Gateway.java:272) 在 py4j.commands.AbstractCommand.invokeMethod(AbstractCommand.java:132) 在 py4j.commands.CallCommand.execute(CallCommand.java:79) 在 py4j.GatewayConnection.run(GatewayConnection.java:214) 在 java.lang.Thread.run(Thread.java:748)

我在这里找不到类似的东西,所以如果有人可以帮助我,我将不胜感激。

【问题讨论】:

    标签: python-3.x pyspark apache-spark-mllib py4j


    【解决方案1】:

    你必须小心类型:

    • bandwidth 必须是 float
    • sample 必须是 RDD[float]

    所以将您的代码替换为:

    kd.setSample(data.map(float))
    kd.setBandwidth(3.0)
    densities = kd.estimate([-1.0, 2.0, 5.0])
    

    你会没事的。

    【讨论】:

    • 谢谢!我现在真的很好:)
    猜你喜欢
    • 2016-07-19
    • 2015-07-08
    • 1970-01-01
    • 2015-02-10
    • 1970-01-01
    • 2014-11-14
    • 1970-01-01
    • 2023-04-05
    • 1970-01-01
    相关资源
    最近更新 更多