如何训练给定RDD的SparkML梯度增强分类器



给定以下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, ...])

最新更新