2016-09-15 57 views
0

SparkML梯度推進分類器鑑於以下RDD如何培養給予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假定所有功能都已在一列中。

+0

鏈接教程假設一個'DataFrame',而不是一個'RDD'雖然。 – mtoto

回答

0

您可以使用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, ...]) 
+0

如果我將RDD轉換爲數據幀,是否意味着它必須被評估?我的數據集太大而不適合內存 – samol

+0

Spark DataFrame仍然是一個分佈式數據集。你可以通過'rdd.toDF()'來完成。 – mtoto