[英]Scale data from dataframe obtained with pyspark
我正在嘗試從 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)
如果我使用熊貓制作數據框,比例部分沒有任何問題,但是使用 spark 我會收到此錯誤:
ValueError: setting an array element with a sequence.
所以我猜測pandas和pyspark之間的元素類型是不同的,但是我如何使用pyspark來進行縮放?
sklearn 適用於熊貓數據框。 所以你必須將spark數據幀轉換為pandas數據幀。
X_scaled = preprocessing.scale(df.toPandas())
您可以使用“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)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.