Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache spark 如何对看不见的实例使用Spark分类?_Apache Spark_Apache Spark Mllib - Fatal编程技术网

Apache spark 如何对看不见的实例使用Spark分类?

Apache spark 如何对看不见的实例使用Spark分类?,apache-spark,apache-spark-mllib,Apache Spark,Apache Spark Mllib,在ApacheSpark中创建分类模型时,培训集和测试集似乎都应该存在?如果我们在创建模型时有一些看不见的实例,但这些实例在后面出现,并且不存在,该怎么办?当我们收到一个看不见的实例时,是否必须重新构建模型?这难道不会使分类在真实场景中变得不切实际吗 在ApacheSpark中创建分类模型时,培训集和测试集似乎都应该存在 可以从train实例中加载测试实例,如中所示 如果我们在创建模型时有一些看不见的实例,但这些实例在后面出现,并且不存在,该怎么办 这个场景与scikit和其他机器学习工具相同,

在ApacheSpark中创建分类模型时,培训集和测试集似乎都应该存在?如果我们在创建模型时有一些看不见的实例,但这些实例在后面出现,并且不存在,该怎么办?当我们收到一个看不见的实例时,是否必须重新构建模型?这难道不会使分类在真实场景中变得不切实际吗

在ApacheSpark中创建分类模型时,培训集和测试集似乎都应该存在

可以从train实例中加载测试实例,如中所示

如果我们在创建模型时有一些看不见的实例,但这些实例在后面出现,并且不存在,该怎么办


这个场景与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)
}