Я пытаюсь делать прогнозы с помощью модели, которую я получил от MLlib на Spark. Цель состоит в том, чтобы сгенерировать кортежи (orinalLabelInData, predictedLabel). Затем эти кортежи можно использовать для оценки модели. Каков наилучший способ добиться этого? Спасибо.
Предполагая, что parsedTrainData является RDD LabeledPoint
from pyspark.mllib.regression import LabeledPoint
from pyspark.mllib.tree import DecisionTree, DecisionTreeModel
from pyspark.mllib.util import MLUtils
parsedTrainData = sc.parallelize([LabeledPoint(1.0, [11.0,-12.0,23.0]),
LabeledPoint(3.0, [-1.0,12.0,-23.0])])
model = DecisionTree.trainClassifier(parsedTrainData, numClasses=7,
categoricalFeaturesInfo={}, impurity='gini', maxDepth=8, maxBins=32)
model.predict(parsedTrainData.map(lambda x: x.features)).take(1)
Это возвращает прогнозы, но я не уверен, как сопоставить каждый прогноз с исходными метками в данных.
Я попытался
parsedTrainData.map(lambda x: (x.label, dtModel.predict(x.features))).take(1)
однако, похоже, что мой способ отправки модели работнику здесь не подходит
/spark140/python/pyspark/context.pyc in __getnewargs__(self)
250 # This method is called when attempting to pickle SparkContext, which is always an error:
251 raise Exception(
--> 252 "It appears that you are attempting to reference SparkContext from a broadcast "
253 "variable, action, or transforamtion. SparkContext can only be used on the driver, "
254 "not in code that it run on workers. For more information, see SPARK-5063."
Exception: It appears that you are attempting to reference SparkContext from a broadcast variable, action, or transforamtion. SparkContext can only be used on the driver, not in code that it run on workers. For more information, see SPARK-5063.
model
. - person zero323   schedule 28.07.2015