给定以下rdd
training_rdd = rdd.select(
# Categorical features
col('device_os'), # 'ios', 'android'
# Numeric features
col('30day_click_count'),
col('30day_impression_count'),
np.true_divide(col('30day_click_count'), col('30day_impression_count')).alias('30day_click_through_rate'),
# label
col('did_click').alias('label')
)
我对训练梯度增强分类器的语法感到困惑。
我遵循这个教程。https://spark.apache.org/docs/latest/ml-classification-regression.html gradient-boosted-tree-classifier
然而,我不确定如何把我的4个特征列变成一个向量。因为VectorIndexer假设所有的特征已经在一列中
您可以使用VectorAssembler
来生成特征向量。请注意,您必须首先将rdd
转换为DataFrame
。
from pyspark.ml.feature import VectorAssembler
vectorizer = VectorAssembler()
vectorizer.setInputCols(["device_os",
"30day_click_count",
"30day_impression_count",
"30day_click_through_rate"])
vectorizer.setOutputCol("features")
因此,您需要将vectorizer
作为第一阶段放入Pipeline
:
pipeline = Pipeline([vectorizer, ...])