0
Ich arbeite an Datenanalyse mit PCA, ich schrieb diesen Code mit PySpark und es funktioniert perfekt, aber es funktioniert nur auf Daten aus einer CSV-Datei mit genau 5 Spalten ["a", "b", "c", "d", "e"], ich schreibe einen generischen Code, der PCA für eine beliebige Anzahl von Spalten aus der CSV-Datei berechnet. Was soll ich hinzufügen? Hier ist mein Code:Pyspark Generisches Modell für PCA-Datenverarbeitung
#########################! importing libraries !########################
from __future__ import print_function
from pyspark.ml.linalg import Vectors
from pyspark.sql import SparkSession
from pyspark import SparkConf, SparkContext
from pyspark.ml.feature import PCA, VectorAssembler
from pyspark.mllib.linalg import Vectors
from pyspark.ml import Pipeline
from pyspark.sql import SQLContext
from pyspark import SparkContext
from pyspark.mllib.feature import Normalizer
import timeit
########################! main script !#################################
sc = SparkContext("local", "pca-app")
sqlContext = SQLContext(sc)
if __name__ == "__main__":
spark = SparkSession\
.builder\
.appName("PCAExample")\
.getOrCreate()
data = sc.textFile('dataset.csv') \
.map(lambda line: [float(k) for k in line.split(';')])\
.collect()
df = spark.createDataFrame(data, ["a","b","c","d","e"])
df.show()
vecAssembler = VectorAssembler(inputCols=["a","b","c","d","e"], outputCol="features")
pca = PCA(k=2, inputCol="features", outputCol="pcaFeatures")
pipeline = Pipeline(stages=[vecAssembler, pca]
model = pipeline.fit(df)
result = model.transform(df).select("pcaFeatures")
result.show(truncate=False))
spark.stop()
nur das fehlende ';' in der "(fileObj.first()). split()" und es funktioniert perfekt: D danke –
@MehdiBenHamida dies hängt von Ihrem Format (Trennzeichen), nahm ich Raum als Trennzeichen. –
wie auch immer, danke: D –