vlambda博客
学习文章列表

R语言实现模糊逻辑推理模型



模糊逻辑推理是以模糊集合论为基础描述工具,对以一般集合论为基础描述工具的数理逻辑进行扩展,从而建立了模糊推理理论。是不确定推理的一种。在人工智能技术开发中有重大意义。今天我们就给大家介绍下在R语言中如何实现模糊推理理论模型。首先我们需要安装R包FuzzyR。

install.packages("FuzzyR")install.packages("shiny")

 

然后我们看下此包中推理模型所提供的隶属函数:

R语言实现模糊逻辑推理模型

对于这些隶属函数的调用,我们需要用到函数genmf(mf.type,mf.params)生成模型,然后通过evalmf对输入的数据进行转化。我们直接看一个示例:

 

my<- genmf('gaussmf', c(1, 3))x <- seq(1, 10, by = 0.1)y <- evalmf(x, my)plot(x, y, type = 'l')title("An example gaussian membershipfunction")

R语言实现模糊逻辑推理模型

上面就是基础的隶属函数以及规则,那么我们自己在R中构建一个由规则、隶属函数等组成的模糊系统时,就开发了一个模糊推理系统,这在R中称为fis。为了能够恰当地考虑隶属函数,我们把所有东西都放在fis中。在这里需要用到函数newfis:

R语言实现模糊逻辑推理模型

我们直接看下实例:

fis <- newfis("fisName")

在建完fis后,我们需要对这个系统添加变量和对应的隶属函数。需要用到函数addmf(fis, varType, varIndex, mfName, mfType, mfParams)或者addvar(fis, varType, varName, varBounds, method = NULL, params =NULL)。我们直接看下实例:

 

fis <- addvar(fis, 'input', 'service',c(0, 10))fis <- addmf(fis, 'input', 1, 'poor','gaussmf', c(3, 0))fis <- addmf(fis, 'input', 1, 'median','gaussmf', c(3, 6))fis <- addmf(fis, 'input', 1, 'power','gaussmf', c(6, 10))plotmf(fis, 'input', 1, main = 'Membershipfunction plots')

R语言实现模糊逻辑推理模型

当然,此包也可以进行多变量的fis构建,我们直接看下实例:

 

fis <- addvar(fis, 'input', 'age', c(0, 70))fis <- addmf(fis, 'input', 2, 'young','gaussmf', c(30, 0))fis <- addmf(fis, 'input', 2, 'medianage', 'gaussmf', c(30, 60))fis <- addmf(fis, 'input', 2, 'old','gaussmf', c(60, 70))plotmf(fis, 'input', 2, main = 'Membershipfunction plots')

R语言实现模糊逻辑推理模型

另外此包为了更方便fis的构建提供了隶属函数的批量导入那就需要用到另一个函数addrule,它可以直接为fis添加隶属函数的参数。我们直接看下包自带的实例:tripper一个主要用于举例目的的函数,它创建一个具有两个输入(服务和食品)、输出变量(tip)及其成员函数的fis。

fis <- tipper()ruleList <- rbind(c(1,1,1,1,2),c(2,0,2,1,1), c(3,2,3,1,2))fis <- addrule(fis, ruleList)plotmf(fis, "input", 1)

R语言实现模糊逻辑推理模型

此处ruleList的描述:第一列是指第一个输入变量在索引1处的隶属函数。第二列是指第二个输入变量在索引2处的隶属度函数。第三列是第一个输出变量在索引3处的隶属函数。第四列是要应用于规则的权重。第五列指的是规则的先行词的模糊运算符(在本例中,它表示“OR”)。

 

R语言实现模糊逻辑推理模型


接下来我们看下此包在输出中的相关功能,首先是一个fis详细信息的输出showfis(fis)。此函数可以将fis的所有参数列出并打印在屏幕上。此外还可以对输入输出变量进行三维可视化展示:

gensurf(fis)

R语言实现模糊逻辑推理模型

 

此包并没有设置mf的修改或者删除函数,那么如果要对已经构建的fis进行修改时,那么就涉及到对fis中各变量的调用。我们直接看下实例:

fis$input[[1]]$mf[[1]]$type <-"trimf"plotmf(fis, "input", 1)

R语言实现模糊逻辑推理模型

最后我们看下,如何进行可视化的交互式操作,那么就需要用到shiny这个包。我们直接看下实例:

 library(shiny)showGUI(fis)

R语言实现模糊逻辑推理模型

欢迎学习交流!