#python #dataframe #pyspark #apache-spark-sql #multilabel-classification
Вопрос:
Я пытаюсь создать несколько меток на основе положительного среднего значения столбца задержки во фрейме данных pyspark и обозначить столбец задержки как 0, если значение ниже нуля, один, если значение находится между нулем и положительным средним, или 2 для оставшихся значений. Однако теперь я хотел получить среднее значение по месяцу, чтобы для разных месяцев у меня была разная метка 1, которая даст более точные метки для прогнозирования.
Я использую данные о задержках рейсов из функции kaggle, созданной только для проверки значения метки в одном столбце. Вместо этого он должен проверить значение месяца и задержки и определить среднее значение для маркировки.
def autoLabelling(input_data,input_col,output_col):
positive_dataset= input_data.filter(col(input_col)>0)
mean = positive_dataset.agg({input_col: "mean"}).collect()[0][0]
def labelling(num):
if num <0:
label =0
elif num >0 and num <=mean:
label=1
else:
label =2
return label
labelling_udf= udf(labelling,IntegerType())
input_data = input_data.withColumn(output_col,labelling_udf(input_data[input_col]))
return input_data
flightsDf.filter((col('ARRIVAL_DELAY')>0)).groupBy(col('MONTH')).agg({'ARRIVAL_DELAY': "mean"})