首页 文章

机器学习挑战:在java / groovy中诊断程序(数据挖掘,机器学习)

提问于
浏览
19

我打算用Java开发程序来提供诊断 . 数据集分为两部分,一部分用于培训,另一部分用于测试 . 我的程序应该学习从训练数据中分类(BTW其中包含30个问题的答案,每个新栏目,新行中的每个记录最后一栏将被诊断为0或1,在数据诊断栏的测试部分将为空 - 数据集包含大约1000条记录),然后在测试部分数据时进行预测:/

我从来没有做过任何类似的事情,所以我会感谢有关解决类似问题的任何建议或信息 .

我正在考虑Java Machine Learning图书馆或Java Data Mining Package但我正确的方向......?我仍然不确定如何应对这一挑战......

请指教 .

祝一切顺利!

5 回答

  • 7

    嗨,正如江恩比尔纳所说,这是一个分类问题 . 我所知道的最佳分类算法是Ross Quinlan算法 . 它在概念上很容易理解 .

    对于分类算法的现成实现,最好的选择是Weka . http://www.cs.waikato.ac.nz/ml/weka/ . 我研究过Weka但没有使用过,因为我发现它有点太晚了 .

    我使用了一个更简单的实现JadTi . 它对于像你这样的小型数据集非常有用 . 我已经使用了很多,所以可以自信地说出来 . JadTi可以在以下位置找到:

    http://www.run.montefiore.ulg.ac.be/~francois/software/jaDTi/

    说了这么多,您的挑战将是在网络上构建一个可用的界面 . 为此,数据集的用途有限 . 数据集基本上是在您已经拥有训练集的前提下工作,并且您只需一步就可以提供新的测试数据集,并立即获得答案 .

    但是我的应用程序,也许是你的应用程序,是一步一步的用户发现,具有在决策树节点上来回传递的功能 .

    为了构建这样的应用程序,我从我的训练集创建了一个PMML文档,并构建了一个Java引擎,遍历树的每个节点,要求用户提供输入(文本/无线电/列表)并使用这些值作为输入 . 下一个可能的节点谓词 .

    PMML标准可以在这里找到:http://www.dmg.org/这里只需要TreeModel . NetBeans XML Plugin是一个很好的模式识别编辑器,用于PMML创作 . Altova XML可以做得更好,但成本为$$ .

    也可以使用RDBMS存储数据集并自动创建PMML!我没试过 .

    祝您的项目顺利,如果您需要进一步的投入,请随时告诉我 .

  • 6

    我强烈建议您使用Weka来完成任务
    它是一系列机器学习算法,具有用户友好的前端,可以实现许多不同类型的功能和模型选择策略
    使用它可以做很多非常复杂的事情,而不需要做任何编码或数学
    制造商还发布了一个解释数据挖掘实际方面的pretty good textbook
    一旦掌握了它,就可以使用它的API将任何分类器集成到自己的java程序中

  • 3

    有各种算法属于“机器学习”类别,适合您的情况取决于您正在处理的数据类型 .

    如果您的数据基本上包含一组问题到一组诊断的映射,每个诊断可以是是/否,那么我认为可能有效的方法包括神经网络和基于测试数据自动构建决策树的方法 .

    我将介绍一些标准文本,如Russel和Norvig(“人工智能:现代方法”)以及其他AI /机器学习的介绍,看看你是否可以轻松地将他们提到的算法适应你的特定数据 . 另请参阅O'Reilly,“编程集体智慧”,了解一些可能适合您案例的算法的一些示例Python代码 .

    如果你能读懂西班牙语,墨西哥出版社Alfaomega近年来也发表了各种与人工智能相关的好文章 .

  • 13

    这是一个分类问题,而不是真正的数据挖掘 . 一般方法是从每个数据实例中提取特征,并让分类算法从特征和结果(对于您为0或1)中学习模型 . 据推测,你的30个问题中的每一个都是它自己的特征 .

    您可以使用许多分类技术 . 支持向量机最受欢迎的是最受欢迎的熵 . 我没有使用Java机器学习库,但是我一眼就看不到其中任何一个 . OpenNLP项目具有最大熵实现 . LibSVM有一个支持向量机实现 . 您几乎肯定必须将数据修改为库可以理解的内容 .

    祝好运!

    更新:我同意另一位评论者的观点,即Russel和Norvig是一本很棒的AI书,其中讨论了其中的一些内容 . Bishop的“模式识别和机器学习”如果您对肮脏和肮脏的细节感兴趣,则会深入讨论分类问题 .

  • 6

    您的任务对于神经网络来说是经典的,它首先用于解决确切的分类任务 . 神经网络在任何语言中都具有相当简单的实现,并且它是"machine learning"的"mainstream",比任何其他语言更接近AI . 您只需实现(或获得现有实现)标准神经网络,例如通过错误反向传播进行学习的多层网络,并在循环中为其提供学习示例 . 经过一段时间的学习,你会得到真正的例子 . 您可以从这里开始阅读有关神经网络的更多信息:http://en.wikipedia.org/wiki/Neural_network http://en.wikipedia.org/wiki/Artificial_neural_network此外,您还可以在此处获得许多现成实施的链接:http://en.wikipedia.org/wiki/Neural_network_software

相关问题