在软件中学习算法和保存数据

Posted

技术标签:

【中文标题】在软件中学习算法和保存数据【英文标题】:Learning Algorithm and Saving Data in Software 【发布时间】:2008-12-31 04:40:46 【问题描述】:

我来自网络开发背景,我想知道如何在 Java/C++ 中制作学习算法。与其说是算法部分,不如说是让程序“记住”它从前一天学到的东西。我会想像保存文件这样的事情,但我怀疑他们可能是一种更简单的方法。抱歉,如果这个问题过于愚蠢。谢谢。

【问题讨论】:

【参考方案1】:

我认为这在一定程度上取决于问题域。您可能希望将学到的“事实”或“关系”存储在数据库中,以便可以轻松搜索它们。如果您正在训练神经网络,那么您可能只是将网络状态转储到文件中。总的来说,我认为一旦你有了一种学习机制,合适的存储表示就会相对明显。

也许如果您能具体说明您想要实施什么样的学习计划,人们可以就实施应该是什么样子提供更多指导,包括状态存储。

【讨论】:

你的回答比我的更有见地。 +1【参考方案2】:

并不愚蠢,但可能有点不合时宜。

当您的程序“学习”某些东西时,您要做的是更新某些数据结构的状态。如果您想保留该状态,您需要将数据结构持久化到某个外部存储。这意味着将数据结构转换为某种外部形式,以便您可以无损地读回。

Java 提供了一种通过Serializable 接口实现此目的的简单方法;你 Serialize 通过 ObjectStream 发送 Serializable 的数据;相同的 ObjectStream 稍后会重新加载它们。

【讨论】:

【参考方案3】:

如果您想访问和保存大量数据,也许数据库会很好用。这将允许您构建数据并以更简单的方式进行查找。我对这个主题不是很精通,但我认为在记忆和回忆事物方面,数据库将大大优于文件系统。

【讨论】:

【参考方案4】:

Java(C++ 也是,但我不知道如何)中的一个健壮/灵活的解决方案将使用数据库。 Java 1.6 带有 Apache derby 数据库,可以嵌入到您的应用程序中。使用 JPA(Java Persistence API)可以轻松地与您可以找到驱动程序的任何数据库进行交互。

【讨论】:

【参考方案5】:

您应该查看Neural Network software development。 Here's 一系列适用于不同语言的优秀神经网络库。我不确定这是否是简单的方法,但一旦完成会非常方便。

【讨论】:

以上是关于在软件中学习算法和保存数据的主要内容,如果未能解决你的问题,请参考以下文章

在Object-C中学习数据结构与算法之排序算法

pytorch&scikit-learn机器学1- 赋予计算机从数据中学习的能力

R语言学习-KNN临近算法

简明机器学习——01机器学习的几个基本要素

在生活中学习数据结构:排序算法之冒泡排序

任务性能度量和经验