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

Reg*_*ser 19 java groovy artificial-intelligence machine-learning data-mining

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

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

我在考虑Java机器学习库或Java数据挖掘包,但我不确定它是否正确的方向......?我仍然不确定如何应对这一挑战......

请指教.

祝一切顺利!

Adi*_*rji 13

我强烈建议你使用Weka作为你的任务
它是一个机器学习算法的集合,具有用户友好的前端,这有助于许多不同类型的功能和模型选择策略
你可以使用它做很多非常复杂的东西,而不是真的有做任何编码或数学
制作者也发表了一本非常好的教科书,解释了数据挖掘的实际方面.
一旦掌握了它,你可以使用它的API将任何分类器集成到你自己的java程序中

  • Weka为+1.另一个好的工具包是*RapidMiner* (5认同)
  • 软件和教科书对于了解机器学习非常有用,我强烈推荐它们. (3认同)

sri*_*lla 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!我没试过.

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

  • 我说,"我知道",对吗?你有什么建议? (3认同)

Nei*_*fey 6

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

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

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

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


Gan*_*ner 6

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

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

祝好运!

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

  • 谢谢,我收到了这本书的副本,确实很棒! (2认同)