Apache spark 如何对看不见的实例使用Spark分类?
在ApacheSpark中创建分类模型时,培训集和测试集似乎都应该存在?如果我们在创建模型时有一些看不见的实例,但这些实例在后面出现,并且不存在,该怎么办?当我们收到一个看不见的实例时,是否必须重新构建模型?这难道不会使分类在真实场景中变得不切实际吗 在ApacheSpark中创建分类模型时,培训集和测试集似乎都应该存在 可以从train实例中加载测试实例,如中所示 如果我们在创建模型时有一些看不见的实例,但这些实例在后面出现,并且不存在,该怎么办Apache spark 如何对看不见的实例使用Spark分类?,apache-spark,apache-spark-mllib,Apache Spark,Apache Spark Mllib,在ApacheSpark中创建分类模型时,培训集和测试集似乎都应该存在?如果我们在创建模型时有一些看不见的实例,但这些实例在后面出现,并且不存在,该怎么办?当我们收到一个看不见的实例时,是否必须重新构建模型?这难道不会使分类在真实场景中变得不切实际吗 在ApacheSpark中创建分类模型时,培训集和测试集似乎都应该存在 可以从train实例中加载测试实例,如中所示 如果我们在创建模型时有一些看不见的实例,但这些实例在后面出现,并且不存在,该怎么办 这个场景与scikit和其他机器学习工具相同,
这个场景与scikit和其他机器学习工具相同,尽管Spark提供了一些可以处理流的算法。我真的不明白为什么训练和测试必须同时出现在“Apache Spark中的分类模型创建”中。在训练和测试之间分离的整个想法是,您使用训练来构建模型,并保持测试分离,这样您就可以使用它来测试您的预测,通过在“看不见的”数据中对其进行评估 例如,分割数据时,您可以执行以下操作:
val splits = data.randomSplit(Array(0.7, 0.3))
val (trainingData, testData) = (splits(0), splits(1))
然后,当你训练你的模型时,比如说一个前逻辑回归分类器,你只把训练数据传递给它,它在训练时不知道任何测试数据的存在
import org.apache.spark.mllib.classification.{LogisticRegressionWithLBFGS, LogisticRegressionModel}
val modelLR = new LogisticRegressionWithLBFGS().run(trainingData)
然后,您可以在testData中测试结果,如:
val testing = testData.map { point =>
val prediction = modelLR.predict(point.features)
(point.label, prediction)
}
这里,评估模型只需要在val prediction=modelLR.predict(point.features)
中指定的特征向量。point.label用于计算精度、精度等性能指标
如果您正在考虑如何将此模型内置到生产中,而新的不可见实例需要预测,则只需创建一个具有与模型训练相同特征的标签点向量,它将返回预测结果
我希望这能有所帮助我还没有从您的回答中搞清楚,Spark是否支持对新实例进行分类?如果是,怎么做?我假设对于一个实例,您指的是一个类标签。如果模型是在没有特定类的情况下构建的,那么您必须重新构建它。您可以在种子设置为8000的情况下尝试上面的示例。列车组将具有0级和2级,测试集仅具有1级。所以准确度是0。不,实际上我所说的实例是一个要分类的新对象,比如说一个要分类的新文档。如果Naive Bayes在预测阶段得到一个未知的实例值,它会忽略它。spark的MLlib中的未知实例值与其他机器学习软件包(scikit、Orange、Knime等)中的处理相同。不,我不是说未知实例。我说的是一个新的实例,一个在训练阶段不存在的实例,稍后将被提供给分类器。
val testing = testData.map { point =>
val prediction = modelLR.predict(point.features)
(point.label, prediction)
}