Я применил Лойистическую регрессию в pyspark и кодах ниже;
import numpy
from pyspark.ml.feature import RFormula
from pyspark.ml.classification import
BinaryLogisticRegressionSummary,LogisticRegression
from pyspark.ml.evaluation import
(BinaryClassificationEvaluator,MulticlassClassificationEvaluator)
затем создайте фрейм данных
df = spark.createDataFrame([(0,0,1),
(1,1,0)]
, ['label', 'X1', 'X2'])
применить R-формулу
formula = RFormula(formula="label ~ X1+X2")
output = formula.fit(df).transform(df)
output.show()
затем примените модель
df_log=output.select([c for c in output.columns if c in
{'label','features'}])
final_model=LogisticRegression()
fit_final_model=final_model.fit(df_log)
predictions_and_labels=fit_final_model.evaluate(df_log)
pred=predictions_and_labels.predictions.show(1,truncate=False)
Ниже выводится (я округлил десятичные дроби)
+-----+---------+----------------------------------------+------------------
|label|features |rawPrediction |probability |prediction|
|0 |[0.0,1.0] |[18.930,-18.93] |[0.99,6.00E-9]|0.0 |
|1 |[1.0,0.0] |[-18.93,18.930] |[6.00E-9,0.99]|1.0 |
+-----+---------+----------------------------------------+-----------------
Теперь мои вопросы:
1) Назначается ли прогноз на основе вторых значений вероятности? если да, то почему? для чего этот массив?
2) Если да, как я могу добавить эти вероятности на моем фрейме данных в виде столбца?
3) Также я хотел бы добавить прогнозы для моего фрейма данных в виде столбца? Ниже я попробовал, но выдает ошибку
df.withColumn('prediction', pred.prediction)
4) Как округлить значения в выводе?
Спасибо.