Я пытался оценить модель случайного леса, вычисляя значения точности / повторного вызова (PR) и эксплуатационной характеристики приемника (ROC), используя BinaryClassificationMetrics
из pyspark.mllib.evaluation
, но продолжаю получать ошибку 'StructField' object has no attribute '_get_object_id'
.Я использую ноутбук Jupyter в кластере на Amazon EMR с дополнительными пакетами Livy, TensorFlow и Spark (Sparkmagic, Pyspark);все остальное только по умолчанию.
Следующий код воспроизводит ошибку для меня:
from pyspark import SparkContext
from pyspark.sql import SparkSession
import pyspark
from pyspark.mllib.evaluation import BinaryClassificationMetrics
a = sc.parallelize([
(0.0, 1.0), (0.0, 1.0), (0.0, 1.0), (0.0, 1.0), (0.0, 1.0),
(0.0, 1.0), (0.0, 1.0), (0.0, 1.0), (0.0, 1.0), (0.0, 1.0),
(0.0, 1.0), (0.0, 1.0), (0.0, 0.0), (0.0, 0.0), (0.0, 0.0),
(0.0, 0.0), (0.0, 0.0), (0.0, 0.0), (0.0, 0.0), (0.0, 0.0),
(0.0, 0.0), (0.0, 0.0), (0.0, 0.0), (0.0, 0.0), (0.0, 0.0)
])
metrics = BinaryClassificationMetrics(a)
Это ошибка, которую я получаю:
'StructField' object has no attribute '_get_object_id'
Traceback (most recent call last):
File "/usr/lib/spark/python/lib/pyspark.zip/pyspark/mllib/evaluation.py", line 52, in __init__ StructField("label", DoubleType(), nullable=False)]))
File "/usr/lib/spark/python/lib/pyspark.zip/pyspark/sql/context.py", line 302, in createDataFramereturn self.sparkSession.createDataFrame(data, schema, samplingRatio, verifySchema)
File "/usr/lib/spark/python/lib/py4j-0.10.7-src.zip/py4j/java_gateway.py", line 1248, in __call__args_command, temp_args = self._build_args(*args)
File "/usr/lib/spark/python/lib/py4j-0.10.7-src.zip/py4j/java_gateway.py", line 1212, in _build_args (new_args, temp_args) = self._get_args(args)
File "/usr/lib/spark/python/lib/py4j-0.10.7-src.zip/py4j/java_gateway.py", line 1199, in _get_args temp_arg converter.convert(arg,self.gateway_client)
File "/usr/lib/spark/python/lib/py4j-0.1 src.zip/py4j/java_collections.py", line 501, in convert java_list.add(element)
File "/usr/lib/spark/python/lib/py4j-0.10.7-src.zip/py4j/java_gateway.py", line 1248, in __call__args_command, temp_args = self._build_args(*args)
File "/usr/lib/spark/python/lib/py4j-0.10.7-src.zip/py4j/java_gateway.py", line 1218, in _build_args [get_command_part(arg, self.pool) for arg in new_args])
File "/usr/lib/spark/python/lib/py4j-0.10.7-src.zip/py4j/protocol.py", line 298, in get_command_part command_part = REFERENCE_TYPE + parameter._get_object_id()
AttributeError: 'StructField' object has no attribute '_get_object_id'