Я использую объект RandomForestClassifier для задачи классификации мультикласса. Выходной кадр данных прогноза представляет столбцы «вероятность» в виде вектора:
df.select('probability').printSchema()
root
|-- probability: vector (nullable = true)
Каждая строка представляет собой вектор из 4:
df.select('probability').show(3)
+--------------------+
| probability|
+--------------------+
|[0.02753394443688...|
|[7.95347766409877...|
|[0.02264704615632...|
+--------------------+
Я хотел бы создать 4 столбца наmy df с одним значением Double каждый.
Подобный вопрос предлагает следующее решение:
from pyspark.sql.functions import udf
from pyspark.sql.types import FloatType
firstelement=udf(lambda v:float(v[0]),FloatType())
df.select(firstelement('probability'))
Решение работает, но когда я пытаюсь присвоить значение новому столбцу с
df.withColumn('prob_SELF', df.select(firstelement('probability'))['<lambda>(probability)'])
У меня следующая ошибка:
AnalysisException: 'resolved attribute(s) <lambda>(probability)#26116 missing from prediction#25521