【发布时间】:2018-12-08 12:23:17
【问题描述】:
在将 Countvectorizer 应用于推文语料库后,我有一个带有两个“标签”和“稀疏向量”的 spark Dataframe。
在尝试训练随机森林回归模型时,我发现它只接受 Type LabeledPoint。
有谁知道如何将我的 spark DataFrame 转换为 LabeledPoint
【问题讨论】:
标签: pyspark rdd apache-spark-mllib random-forest
在将 Countvectorizer 应用于推文语料库后,我有一个带有两个“标签”和“稀疏向量”的 spark Dataframe。
在尝试训练随机森林回归模型时,我发现它只接受 Type LabeledPoint。
有谁知道如何将我的 spark DataFrame 转换为 LabeledPoint
【问题讨论】:
标签: pyspark rdd apache-spark-mllib random-forest
您使用的是哪个 spark 版本。 Spark 使用 spark ml 而不是 mllib。
from pyspark.ml.feature import CountVectorizer
from pyspark.ml.classification import RandomForestClassifier
from pyspark.sql import functions as F
# Input data: Each row is a bag of words with a ID.
df = sqlContext.createDataFrame([
(0, "a b c".split(" ")),
(1, "a b b c a".split(" "))
], ["id", "words"])
# fit a CountVectorizerModel from the corpus.
cv = CountVectorizer(inputCol="words", outputCol="features", vocabSize=3, minDF=2.0)
model = cv.fit(df)
result = model.transform(df).withColumn('label', F.lit(0))
rf = RandomForestClassifier(labelCol="label", featuresCol="features", numTrees=10)
rf.fit(result)
如果你坚持使用 mllib:
from pyspark.mllib.regression import LabeledPoint
from pyspark.mllib.tree import RandomForest
rdd = result \
.rdd \
.map(lambda row: LabeledPoint(row['label'], row['features'].toArray()))
RandomForest.trainClassifier(rdd, 2, {}, 3)
【讨论】: