0

我想清理并概括我的机器学习“框架”。我有不同的学习算法,例如提升或人工神经网络,它们使用不同的学习数据表示。例如,我的 ANN 实现仅使用由单个实值(以及表示其类的值)组成的数据样本。另一方面,我的 boosting 实现使用了在图像上计算的类似 Haar 的特征。因此,我的训练数据可能由图像、积分图像或单个实数值组成。

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

这样的任务是否有一个不错的设计模板,或者您知道“智能”解决方案吗?

4

1 回答 1

0

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

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

而不是为每个算法创建一个子类,例如 ANNLearningAlgorithm、BoostingLearningAlgorithm 等。

您需要的最后一件事是工厂方法(或依赖注入或任何其他解决方案)来根据您决定的任何参数创建您想要的子类。

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

于 2013-06-09T12:30:22.533 回答