如何使用Pyspark处理ML的数据帧

时间:2018-02-06 07:06:03

标签: python apache-spark machine-learning pyspark apache-spark-ml

我正在使用pyspark进行GBT建模。 我有一个数据帧,输入(X)的功能是多列:A,B,C 输出(Y)是一列,二进制值为0和1。

我对VectorAssembler感到困惑,并在处理GBT建模的数据框时进行了转换。我怎么能用pyspark呢?

我在python中使用的代码是这样的:

X_train, X_test = df_train.select(features), df_test.select(features) #5083, 1133
y_train, y_test = df_train.select(label), df_test.select(label)

gbt = GBTClassifier(maxIter=5, maxDepth=2, labelCol="indexed", seed=42)
model = gbt.fit(X_train,y_train)

如何使用pyspark获取X_train和y_train?

1 个答案:

答案 0 :(得分:-1)

VectorAssembler接受两个参数inputcols(要在向量中汇编的cols)和outputcol(输出col的名称)。 一个简单的例子是

from  pyspark.ml.feature import VectorAssembler
df = spark.createDataFrame([(1, 0, 3, 0),(4,5,6, 1),(7,8,9, 0)], 
              ["a", "b", "c", 'label'])

vecAssembler = VectorAssembler(inputCols=["a", "b", "c"], outputCol="features")

df_va = vecAssembler.transform(df)

df_VA现在包含四列['a', 'b', 'c', 'label','features']。 要素列中的每一行都包含一个包含['a', 'b', 'c']

值的向量

GBTC分类器需要知道哪些列是因变量。 因此对于这个数据帧,它将是“标签”。 从df_va中选择要素和标签列,并像这样适合您的模型。

df_gbt = df_va['label', 'features']
gbt = GBTClassifier(maxIter=5, maxDepth=2, labelCol="label", seed=42)
gbt.fit(df_gbt)