我正在使用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?
答案 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)