如何在Java中创建模糊逻辑规则或模型

时间:2016-01-29 11:00:23

标签: java model machine-learning prediction fuzzy-logic

在我的新工作中,我被赋予了新的任务,基本上,我必须创建一个“模型”来预测未来的数据。我被告知模糊逻辑是最好的方法,我几乎每天都使用Java,所以我更喜欢在这里使用它。

我搜索过有关模糊逻辑的信息,我大致了解它是什么以及它是如何工作的(HereHere)。

我也搜索了可以帮助我解决此问题的API(例如,JFuzzyLogicJFuzzyLite),但这些似乎都无法做到我想要的(或者也许是我,我不知道我在寻找什么。)

我的想法是根据我拥有的数据动态生成“规则”(它们共同构成一个模型)。 (我有不同结果的数据,这个模型会告诉我新数据是属于一个结果还是另一个结果,基本预测)。

我是否以正确的方式解决问题?是否有任何Java API具有此功能?

请告诉我,如果我错了,我想尽可能多地学习。

谢谢大家阅读本文(你可能需要纠正我的英语错误,对不起)。

编辑(更多信息):我的数据存储在Excel中,每个都有大约5000行和75列(列号始终相同):

  • 所有有用的值都是数字(浮点数)(我过滤其余部分)。
  • 每一行都是特定作品的数据,每列都是一个属性(长度,宽度,高度......还有67个)。
  • 最后一列是一个代码(也是浮点数),说明它是什么类型的作品
    • 这是我想要预测的结果。我们的想法是根据其他列值预测一个片段的代码。

2 个答案:

答案 0 :(得分:1)

它看起来像标准的regression问题。您想根据其他数字的值预测一个数字。

让我们打电话给你的最后一列是Y,其他所有人都是X_i。你想找到一个基于X给你Y的函数(你的模型)。所以Y = f(X)。您的模型可以采用多种形式。你应该从最简单的一个开始,这是一个线性模型。

线性回归将尝试找到最佳W_i,以便:

Y = W_0 * X_0 + W_1 * X_1 + ... + W_n * X_n

所以你需要的是Java中的回归库。一个受欢迎的是WEKA,它有一个很好的linear regression class

关于模糊逻辑,我不是专家,但它似乎不太适合你的问题。

答案 1 :(得分:0)

有一个Java模糊匹配算法,对于类似的问题,我发现它非常有用。我们有一行记录,其中每一列都是不同类型的元素。

https://github.com/intuit/fuzzy-matcher

例如,一个用户列表,并且具有诸如(名称,地址,电话)之类的属性,并且希望通过输入每种数据的不同格式来预测哪些用户是相似的。

该库将相似的行分组在一起,并给出相似行的概率得分(通过冒泡每个相似元素的得分)

该库非常适合于字符串相似度,但是也可以用于查找数字数据之间的相似度。我能够传递一个电话号码列表,并且能够识别相似的电话号码。

希望这会有所帮助