Scala 如何创建一个估计器,在已经拟合到初始数据集之后训练新样本?
我正试图创建我自己的Scala 如何创建一个估计器,在已经拟合到初始数据集之后训练新样本?,scala,apache-spark,machine-learning,apache-spark-mllib,Scala,Apache Spark,Machine Learning,Apache Spark Mllib,我正试图创建我自己的估计器,遵循我在Spark源代码中找到的这个示例 但在本例中,每次我在Estimator中调用fit()方法时,它都会返回一个新的模型 我想要类似于再次拟合的东西来训练更多尚未训练的样本 我想在模型中创建一个新方法来实现这一点。但我不确定这是否有意义。 知道我的模型不需要再次处理所有数据集来训练新样本,我们也不想更改模型结构,这可能是件好事。您可以使用保存、加载并继续拟合模型: MLlib标准化了机器学习算法的API,使多个算法更容易组合到单个管道或工作流中。本节介绍Pipe
估计器
,遵循我在Spark源代码中找到的这个示例
但在本例中,每次我在Estimator
中调用fit()
方法时,它都会返回一个新的模型
我想要类似于再次拟合的东西来训练更多尚未训练的样本
我想在模型中创建一个新方法来实现这一点。但我不确定这是否有意义。
知道我的模型不需要再次处理所有数据集来训练新样本,我们也不想更改模型结构,这可能是件好事。您可以使用保存、加载并继续拟合模型:
MLlib标准化了机器学习算法的API,使多个算法更容易组合到单个管道或工作流中。本节介绍Pipelines API引入的关键概念,其中管道概念主要受scikit学习项目的启发
查找示例代码。定义了spark ml估计器的基类。如您所见,class方法fit
是一个普通调用,用于使用输入数据训练模型
您应该引用类似类的内容,特别是trainOnRows函数,其中输入是RDD和可选初始系数矩阵(训练模型的输出)。这将允许您在不同的数据集上迭代地训练模型
对于您需要实现的目标,请记住您选择的算法必须能够支持迭代更新。例如,glm、神经网络、树集合等。如果您知道如何改进模型中的训练,而不使用已使用的数据进行重新训练,那么您不能在同一个类中进行训练,因为您希望a也是a,但遗憾的是,这不可能直接实现,因为两者都是抽象类,不能在同一个类中混合使用
正如您所说,您可以在模型中提供一种方法,该方法将返回估计器以改进/增加训练
类MyEstimator扩展估计器[MyModel]{
...
}
类MyModel扩展模型[MyModel]{
def retain:MyEstimator=//创建一个我的估计器实例,它包含所有以前的知识
}