a95b806a73
- Parallel util for partitioners
64 lines
2.0 KiB
Python
64 lines
2.0 KiB
Python
import numpy as np
|
|
import pandas as pd
|
|
import matplotlib as plt
|
|
import matplotlib.colors as pltcolors
|
|
import matplotlib.pyplot as plt
|
|
from mpl_toolkits.mplot3d import Axes3D
|
|
from pyFTS.common import Membership, Util
|
|
from pyFTS.partitioners import Grid,Huarng,FCM,Entropy
|
|
|
|
|
|
def plot_sets(data, sets, titles, tam=[12, 10], save=False, file=None):
|
|
num = len(sets)
|
|
#fig = plt.figure(figsize=tam)
|
|
maxx = max(data)
|
|
minx = min(data)
|
|
#h = 1/num
|
|
#print(h)
|
|
fig, axes = plt.subplots(nrows=num, ncols=1,figsize=tam)
|
|
for k in np.arange(0,num):
|
|
#ax = fig.add_axes([0.05, 1-(k*h), 0.9, h*0.7]) # left, bottom, width, height
|
|
ax = axes[k]
|
|
ax.set_title(titles[k])
|
|
ax.set_ylim([0, 1])
|
|
ax.set_xlim([minx, maxx])
|
|
for s in sets[k]:
|
|
if s.mf == Membership.trimf:
|
|
ax.plot(s.parameters,[0,1,0])
|
|
elif s.mf == Membership.gaussmf:
|
|
tmpx = [ kk for kk in np.arange(s.lower, s.upper)]
|
|
tmpy = [s.membership(kk) for kk in np.arange(s.lower, s.upper)]
|
|
ax.plot(tmpx, tmpy)
|
|
elif s.mf == Membership.gaussmf:
|
|
ax.plot(s.parameters, [0, 1, 1, 0])
|
|
|
|
plt.tight_layout()
|
|
|
|
Util.showAndSaveImage(fig, file, save)
|
|
|
|
|
|
def plot_partitioners(data, objs, tam=[12, 10], save=False, file=None):
|
|
sets = [k.sets for k in objs]
|
|
titles = [k.name for k in objs]
|
|
plot_sets(data,sets,titles,tam,save,file)
|
|
|
|
|
|
def explore_partitioners(data, npart, methods=None, mf=None, tam=[12, 10], save=False, file=None):
|
|
all_methods = [Grid.GridPartitioner, Entropy.EntropyPartitioner, FCM.FCMPartitioner, Huarng.HuarngPartitioner]
|
|
mfs = [Membership.trimf, Membership.gaussmf, Membership.trapmf]
|
|
|
|
if methods is None:
|
|
methods = all_methods
|
|
|
|
if mf is None:
|
|
mf = mfs
|
|
|
|
objs = []
|
|
|
|
for p in methods:
|
|
for m in mf:
|
|
obj = p(data, npart,m)
|
|
objs.append(obj)
|
|
|
|
plot_partitioners(data, objs, tam, save, file)
|