В кадре данных Spark Scala из результатов прогнозирования Xgboost4j / scala содержится столбец вероятности с массивами.Как извлечь это? - PullRequest
0 голосов
/ 21 сентября 2019

Мне нужны вероятности, сгенерированные из XGboost / scala, извлеченные из моего фрейма предсказаний.Я новичок в spark / scala, и я заметил, что информационный фрейм выходит интерактивным и имеет столбец «вероятность», который имеет тип «udf» и содержит массив вероятностей.Мне просто нужно извлечь первую вероятность, которая является вероятностью класса 0 и моего другого столбца 'ID'.

Это экземпляр одной строки столбца «вероятность», когда он не свернут:

массив 0: 1 1: 2 2: [] 3: 0: 0.9405021741986275 1: 0,054949782580137253

при свертывании:

[1,2, [], [0.9405021741986275,0.05949782580137253]]

и экземпляр столбца идентификатора: 57693755

Я попытался создатьtempview фрейма данных Predictions с помощью scala, а затем с помощью spark.sql для запроса «ID» и подстроки «вероятности» в python.Следующим образом:

val predictions = model.transform(prod)
predictions.createOrReplaceTempView("predictions")

```python
final_results=spark.sql("select ID, SUBSTRING(cast(probability as string),2,9) as prob from predictions")

but the issue is when I try to save to a table, spark stages fail:

```python
final_results.write.saveAsTable('final_predictions_table')

```md

This works and gets me the output I need all the way until I try to save results as table. That's when spark stages start failing and so I believe this is a very suboptimal way of doing this. The output I want is basically:
'ID'         'Probability'
57693755       0.94050
Can anyone please help me out? I am a spark/scala newbie and am on DataBricks.

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