我想要清理和概括我的机器学习“框架”。我有不同的学习算法,如boosting或ANN,它们使用不同的学习数据表示。例如,我的ANN实现只使用由单个实值(和一个表示其类的值)组成的数据样本。另一方面,我的boosting实现使用了在图像上计算的类似Haar的特征。因此,我的训练数据可以由图像、整体图像或单个实值组成。
我希望将(训练)数据的所有可能表现形式聚合到一个类中,但我还没有找到一个很好的解决方案。
对于这样的任务,有没有一个很好的设计模板,或者你知道一个“聪明”的解决方案?
发布于 2013-06-09 20:30:23
我不熟悉机器学习算法,但从你的描述来看,听起来你有几组类执行相同的操作("Learn“或"Analyze"),但它们以不同的方式实现(ANN,Boosting等)。
我建议研究一下Strategy设计模式。您可以使用所有不同的学习算法实现的单个操作构建一个抽象类(或接口)。让我们将这个类称为BaseLearningAlgorithm。
然后为每个算法创建一个子类,如ANNLearningAlogrithm、BoostingLearningAlgorithm等。
您需要做的最后一件事是使用Factory method (或依赖注入,或任何其他解决方案)来根据您决定的参数创建您想要的子类。
这种设计将允许您轻松添加新的学习算法,而无需更改已编写的任何代码行(OCP)。
https://stackoverflow.com/questions/16992074
复制相似问题