pythonの.map()関数を使用して、sparkデータフレームからlabeledPointsのセットを作成しますか?ラベル/結果が最初の列ではないが、その列名、「ステータス」を参照できる場合は、表記法とは何ですか?PythonのSpark DataFrameからlabeledPointsを作成
私はこの.MAP()関数でPythonのデータフレームを作成します。
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
私はそれがすべてのパンダのデータフレームを再結合したreduce関数の後にスパークデータフレームに変換します。
parsedData=sqlContext.createDataFrame(parsedData)
しかし、これからどのようにしてlabonedPointsをPythonで作成できますか?私は別の.map()関数かもしれないと仮定?
from pyspark.ml.feature import VectorAssembler
assembler = VectorAssembler(
inputCols=["your", "independent", "variables"],
outputCol="features")
transformed = assembler.transform(parsedData)
次はあなたが簡単にマップすることができます:スパークのよう
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)))
すでに数値の機能を持っており、追加の変換を必要としないいる場合は
これは、残念ながら、動作しません。まず、 '.map()'はデータフレームでは動作しません。第2に、最初にRDDに変換しても、エラー 'TypeError:タイプをVectorに変換できません。 –
xenocyon