Python'da .map() işlevi, bir kıvılcım veri çerçevesinden etiketli bir dizi oluşturmak için kullanıyorum? Eğer etiket/sonuç ilk sütun değilse ancak onun sütun ismine 'durum' diyebiliyorsa notasyon nedir?Python'da Spark DataFrame'den etiketliPoints oluştur
Bu .map() fonksiyonu ile piton dataframe oluşturun:
def parsePoint(line):
listmp = list(line.split('\t'))
dataframe = pd.DataFrame(pd.get_dummies(listmp[1:]).sum()).transpose()
dataframe.insert(0, 'status', dataframe['accepted'])
if 'NULL' in dataframe.columns:
dataframe = dataframe.drop('NULL', axis=1)
if '' in dataframe.columns:
dataframe = dataframe.drop('', axis=1)
if 'rejected' in dataframe.columns:
dataframe = dataframe.drop('rejected', axis=1)
if 'accepted' in dataframe.columns:
dataframe = dataframe.drop('accepted', axis=1)
return dataframe
Ben tüm pandalar dataframes yeniden bağlanmış azaltmak işlevi sonra kıvılcım dataframe dönüştürmek.
parsedData=sqlContext.createDataFrame(parsedData)
Fakat şimdi python'da bundan nasıl etiketli notlar oluşturabilirim? Başka bir .map() işlevi olabileceğini varsayalım?
from pyspark.ml.feature import VectorAssembler
assembler = VectorAssembler(
inputCols=["your", "independent", "variables"],
outputCol="features")
transformed = assembler.transform(parsedData)
Sonraki basitçe eşleyebilirsiniz: Spark itibariyle
from pyspark.mllib.regression import LabeledPoint
from pyspark.sql.functions import col
(transformed.select(col("outcome_column").alias("label"), col("features"))
.rdd
.map(lambda row: LabeledPoint(row.label, row.features)))
Zaten sayısal özelliklere sahip ve hiçbir ek dönüşümler gerektiren Eğer
Bu maalesef çalışmıyor. İlk olarak, .map() 'dataframes ile çalışmaz. İkincisi, ilk önce bir RDD'ye dönüşse bile, 'TypeError:' 'vektörüne' 'dönüştürülemiyor. –
xenocyon