【发布时间】:2017-08-23 19:22:01
【问题描述】:
我正在做一个文本分类,我已经使用管道方法建立了一个模型。我已经创建了 RF 分类器对象并设置了我在之前的步骤中获得的特征列和标签列(步骤未显示)。
我正在拟合我使用数据框创建的训练数据,其中包含“标签”和“句子”列。标签是不同的问题类型。 DF 看起来像,
training = sqlContext.createDataFrame([
("DESC:manner", "How did serfdom develop in and then leave Russia ?"),
("DESC:def", "What does '' extended definition '' mean and how would one a paper on it ? "),
("HUM:ind", " Who was The Pride of the Yankees ?")
], ["label", "sentence"])
管道的代码是,
rf = RandomForestClassifier().setFeaturesCol("features").setLabelCol("idxlabel")
pipeline = Pipeline(stages=[pos, tokenizer, hashingTF, idf, indexer,rf])
model = pipeline.fit(training)
所以现在我可以使用以下代码得到预测,
prediction = model.transform(test)
selected = prediction.select("sentence","prediction")
我可以执行 select() 操作来获取预测的标签。
但对于我的用例,有一个来自 Kinesis 的数据流,它只是句子(纯字符串)。对于每个句子,我必须预测标签。但是现在我在执行 dir(model) 时没有找到任何 predict() 函数。为什么从 pyspark.ml 获得的 RandomForestClassifier 没有 predict() 方法?如果没有,我怎样才能成功地执行我的用例?我需要 predict() 方法来满足要求。如果不是 RF,我应该使用什么 ML 算法?我做错什么了吗?任何人都可以提出一些建议吗?任何帮助表示赞赏。我的环境是 Spark 1.6 和 Python 2.7。
【问题讨论】:
标签: python machine-learning pyspark random-forest prediction