Я довольно новичок в Pyspark. У меня есть фрейм данных, и я хотел бы создать 3-й столбец с расчетом RMSE от col1
до col2
. Я использую пользовательскую лямбда-функцию для вычисления RMSE, но продолжаю получать эту ошибку AttributeError: 'int' object has no attribute 'mean'
from pyspark.sql.functions import udf,col
from pyspark.sql.types import IntegerType
from pyspark import SparkContext
from pyspark.sql import SparkSession
from pyspark.sql import SQLContext
spark = SparkSession.builder.config("spark.driver.memory", "30g").appName('linear_data_pipeline').getOrCreate()
sqlContext = SQLContext(sc)
old_df = sqlContext.createDataFrame(sc.parallelize(
[(0, 1), (1, 3), (2, 5)]), ('col_1', 'col_2'))
function = udf(lambda col1, col2 : (((col1 - col2)**2).mean())**.5)
new_df = old_df.withColumn('col_n',function(col('col_1'), col('col_2')))
new_df.show()
Как мне лучше go исправить эту проблему? Я также хотел бы найти среднеквадратическое значение / среднее значение, среднюю абсолютную ошибку, среднюю абсолютную ошибку / среднее значение, среднюю абсолютную ошибку и среднюю процентную ошибку, но как только я пойму, как рассчитать одну, я буду хорош для других.