我想在Java中编写一个"智能监视器",它会在检测到即将发生的性能问题时发出警报.我的Java应用程序正在以结构化格式将数据写入日志文件:
<datetime> | <java-method> | <seconds-to-execute>
Run Code Online (Sandbox Code Playgroud)
因此,例如,如果我有一个Widget#doSomething(String)执行812ms 的方法,它将被记录为:
2013-03-24 11:39:21 | Widget#doSomething(String) | 812
Run Code Online (Sandbox Code Playgroud)
随着性能开始下降(例如在主要收集期间,在峰值负载期间,或者如果系统正在慢慢爬行),方法执行时间开始减慢; 所以最右边的列开始看到大量的数字(有时候执行单个方法需要20到40秒).
在大学 - 进行机器学习练习 - 我写了我的教授所谓的线性二分法,它采用简单的测试数据(一个人的身高,体重和性别),并"学会"如何根据他们的人将男性或女性分类身高体重.然后,一旦它掌握了所有的训练数据,我们就会向它提供新的数据,以确定它可以准确地确定性别.
我认为线性二分法的多变量版本称为支持向量机(SVM).如果我错了,那么请澄清,我会将问题的标题更改为更合适的名称.无论如何,我需要这个应用程序来做以下事情:
java-method和seconds-to-execute列作为输入/测试数据很重要; 我不关心日期时间重要的是要注意这一seconds-to-execute列并不是唯一重要的因素,因为我看到某些方法在令人敬畏的性能期间出现了可怕的时序,并且在服务器似乎即将死亡的时候,其他方法确实很好的时机并推动雏菊.因此,显然某些方法比其他方法"加权"/更重要.
jlibsvm,svmlearn但前者看起来处于纯beta状态,而后者似乎只支持二元决策(就像我的旧线性二分法).我知道有Mahout,但它位于Hadoop之上,我认为我没有足够的数据来保证建立我自己的Hadoop集群所需的时间和精力.提前致谢!
我已经习惯sklearn了训练一组SVM分类器(大多数是线性的,LinearSVM但有些是使用SVCrbf内核的类),我对结果非常满意.现在我需要将生产中的分类器导出到另一个使用Java的代码库中.我正在寻找可以在这个新代码库中轻松整合的可能库,这些库是在maven中发布的.
你有什么建议?