You are on page 1of 8

Distributedrepresentationoffuzzyrules

anditsapplicationtopatternclassification

:
.

.
.
.
.

[0,1]
.
[0,1]*[0,1]
.
membership function
:

aki bk :

iik.MF
.

.
beta1
beta2.
beta1,2:

beta1beta2
beta2
.
.

.
.
.

.
:

MFbeta
.
MF.
beta tnorm tnorm
:


.
:


. tnorm
.

python:

L
L



x1x2 c
.
.

.
:
defdata(n):
f=problem()
train_data1=[]
train_data0=[]
cl1=0
cl2=0
whileTrue:
a=random.random()
b=random.random()
c=f.problem1(a,b)
ifc==1:
cl1+=1
v1=[a,b,c]
ifcl1<=n/2:
train_data1.append(v1)
elifc==0:
cl2+=1
v2=[a,b,c]
ifcl2<=n/2:
train_data0.append(v2)
iflen(train_data1)==n/2&len(train_data0)==n/2:
break

returntrain_data1,train_data0

.
)(.
problem .
problem1.



x1x2)(
:
L
L
ifx1is Ai andx2is Aj thenxpisclass0/class1withCF
:
[0,1]L.x
ALi ..
) (L
CF
.
.

.
beta
. beta

.

.
L L
.
:L
L L=2
L
L .
L .
. L
.
L.:
defdetermine_L(data1,data2):
l_max=15
eps_max=1
g_ij_k=[]
max_rate=0
best=2
forllinrange(2,l_max+1,1):
g_ij=[]
foriiiinrange(0,ll,1):
forjjjinrange(0,ll,1):

beta1=0
beta2=0
foriiinrange(0,len(data1),1):
beta1=beta1+mu_func(data1[ii][0],iii,ll)*mu_func(data1[ii][1],jjj,ll)
beta2=beta2+mu_func(data2[ii][0],iii,ll)*mu_func(data2[ii][1],jjj,ll)
ifbeta1>beta2:
cf=1.0*(beta1beta2)/(beta1+beta2)
v=[1,cf]
g_ij.append(v)
elifbeta2>beta1:
cf=1.0*(beta2beta1)/(beta1+beta2)
v=[0,cf]
g_ij.append(v)
else:
v=[1,1]
g_ij.append(v)
g_ij_k.append(g_ij)
counter=0
foriiinrange(0,len(data1+data2),1):
alfa1,alfa2=fuzzy_inference((data1+data2)[ii],g_ij_k,ll)
ifalfa1>alfa2:
if(data1+data2)[ii][2]==1:
counter+=1
elifalfa2>alfa1:
if(data1+data2)[ii][2]==0:
counter+=1
rate=1.0*counter/len((data1+data2))
#printrate
ifrate>max_rate:
max_rate=rate
best=ll
ifrate>=eps_max:
best=ll
break
print'accuracyratefortrainingdata=',rate
returnbest,g_ij_k

.
L Lmax
) .
.Lmax=15(

rule rule
L g_ij_kL
.g_ij
rule L
L . beta


. .
membershipfunction

beta.
(confidence)
.
L
fuzzy_inference ) (
.

breakL
.

.:
deftest(l_d,g_d,data_set):
counter=0
foriiinrange(0,len(data_set),1):
alfa1,alfa2=fuzzy_inference(data_set[ii],g_d,l_d)
ifalfa1>alfa2:
ifdata_set[ii][2]==1:
counter+=1
elifalfa2>alfa1:
ifdata_set[ii][2]==0:
counter+=1
rate=1.0*counter/len(data_set)
returnrate

.
0.860.96.



L
.

.

L

L
.

You might also like