需要针对通用训练数据类的设计建议

时间:2013-06-07 20:02:47

标签: design-patterns machine-learning

我想清理并概括我的机器学习“框架”。 我有不同的学习算法,如boost或ANN,它们使用不同的学习数据表示。例如,我的ANN实现仅使用由单个实数值(和表示其类的值)组成的数据样本。另一方面,我的增强实现使用了在图像上计算的类Haar特征。因此,我的训练数据可能包括图像,积分图像或单个实际值。

我希望在单个课程中汇总(训练)数据的所有可能表现形式,但我还没有找到一个很好的解决方案。

是否有适合此类任务的漂亮设计模板,或者您是否知道“智能”解决方案?

1 个答案:

答案 0 :(得分:0)

我不熟悉机器学习算法,但从你所描述的内容来看,听起来你有几组执行相同动作的类(“学习”或“分析”),但它们以不同的方式实现(ANN,Boosting等)。

我建议查看Strategy设计模式。您可以使用所有各种学习算法实现的单个操作来构建抽象类(或接口)。让我们称这个类为BaseLearningAlgorithm。

比每个算法创建一个子类,如ANNLearningAlogrithm,BoostingLearningAlgorithm等。

您需要的最后一件事是Factory method(或依赖注入,或任何其他解决方案),根据您决定的任何参数创建所需的子类。

此设计允许您轻松添加新的学习算法,而无需更改已编写的任何代码行(OCP)。