我正在尝试缩放csv文件中的某些数据。我正在用pyspark进行此操作以获得比例部分的数据框和sklearn。这是代码:
from sklearn import preprocessing
import numpy as np
import pyspark
from pysparl.sql import SparkSession
spark = SparkSession.builder.getOrCreate()
df = spark.read.option('header','true').csv('flights,csv')
X_scaled = preprocessing.scale(df)
如果我使用大熊猫制作数据框,则比例尺部分没有任何问题,但是使用电火花我会收到此错误:
ValueError: setting an array element with a sequence.
所以我猜测pandas和pyspark之间的元素类型不同,但是如何与pyspark一起使用来进行缩放?
答案 0 :(得分:1)
sklearn与pandas数据框一起使用。因此,您必须将spark数据框转换为pandas数据框。
X_scaled = preprocessing.scale(df.toPandas())
答案 1 :(得分:0)
您可以使用“ pyspark.ml.feature”中的“ StandardScaler”方法。附加示例脚本以像sklearn一样执行精确的预处理,
步骤1:
from pyspark.ml.feature import StandardScaler
scaler = StandardScaler(inputCol="features",
outputCol="scaled_features",
withStd=True,withMean=True)
scaler_model = scaler.fit(transformed_data)
scaled_data = scaler_model.transform(transformed_data)
请记住,在执行步骤1之前,您需要使用VectorAssembler组装所有功能。因此,这将是您的第0步。
from pyspark.ml.feature import VectorAssembler
assembler = VectorAssembler(inputCols=required_features, outputCol='features')
transformed_data = assembler.transform(df)