Contact
CoCalc Logo Icon
StoreFeaturesDocsShareSupport News AboutSign UpSign In
| Download

Estimativa de efetivo para PMMT nas eleições de 2018

Project: Pesquisa
Views: 2364
Kernel: Python 3 (Anaconda 5)
# pip3 install -U scikit-fuzzy # http://pythonhosted.org/scikit-fuzzy/auto_examples/index.html # Instalar via terminal
import numpy as np import skfuzzy as fuzz from skfuzzy import control as ctrl import matplotlib.pyplot as plt

Crimes eleitorais (ce)

# Outros crimes eleitorais oce = ctrl.Antecedent(np.arange(0, 10.1, 0.1), 'outros crimes eleitorais') oce['muito baixo'] = fuzz.trimf(oce.universe, [0, 0, 0.7]) oce['medio'] = fuzz.trimf(oce.universe, [0.5, 1, 1.5]) oce['muito alto'] = fuzz.trapmf(oce.universe, [1.3, 3, 5, 10]) oce.view()
/ext/anaconda5/lib/python3.6/site-packages/matplotlib/figure.py:445: UserWarning: Matplotlib is currently using module://ipykernel.pylab.backend_inline, which is a non-GUI backend, so cannot show the figure. % get_backend())
Image in a Jupyter notebook
# Boca de urna bu = ctrl.Antecedent(np.arange(0, 5.1, 0.1), 'boca de urna') bu['muito baixo'] = fuzz.trimf(bu.universe, [0, 0, 1]) bu['medio'] = fuzz.trapmf(bu.universe, [0.5, 1.0, 2.0, 2.5]) bu['muito alto'] = fuzz.trapmf(bu.universe, [2, 3, 5, 5]) bu.view()
/ext/anaconda5/lib/python3.6/site-packages/matplotlib/figure.py:445: UserWarning: Matplotlib is currently using module://ipykernel.pylab.backend_inline, which is a non-GUI backend, so cannot show the figure. % get_backend())
Image in a Jupyter notebook
# Estimativa de efetivo (ce) ef_ce = ctrl.Consequent(np.arange(0, 3.1, 0.1), 'efetivo') ef_ce['muito baixo'] = fuzz.trimf(ef_ce.universe, [0, 0, 0.5]) ef_ce['medio'] = fuzz.trimf(ef_ce.universe, [0.3, 1.0, 1.7]) ef_ce['muito alto'] = fuzz.trimf(ef_ce.universe, [1.5, 2.0, 2.5]) ef_ce.view()
/ext/anaconda5/lib/python3.6/site-packages/matplotlib/figure.py:445: UserWarning: Matplotlib is currently using module://ipykernel.pylab.backend_inline, which is a non-GUI backend, so cannot show the figure. % get_backend())
Image in a Jupyter notebook
# Regras (ce) regra_ce_ma_1 = ctrl.Rule(oce['muito alto'] | bu['muito alto'], ef_ce['muito alto']) regra_ce_a_1 = ctrl.Rule(oce['medio'] & ~bu['muito alto'], ef_ce['medio']) regra_ce_a_2 = ctrl.Rule(~oce['muito alto'] & bu['medio'], ef_ce['medio']) regra_ce_mb_1 = ctrl.Rule(oce['muito baixo'] & bu['muito baixo'], ef_ce['muito baixo'])
# Cria um sistema de controle e uma simulação para crimes eleitorais eleicao_ce_ctrl = ctrl.ControlSystem([regra_ce_ma_1, regra_ce_a_1, regra_ce_a_2, regra_ce_mb_1]) eleicao_ce_sim = ctrl.ControlSystemSimulation(eleicao_ce_ctrl)
eleicao_ce_ctrl.view()
/ext/anaconda5/lib/python3.6/site-packages/matplotlib/figure.py:445: UserWarning: Matplotlib is currently using module://ipykernel.pylab.backend_inline, which is a non-GUI backend, so cannot show the figure. % get_backend())
Image in a Jupyter notebook
# Entrada eleicao_ce_sim.input['outros crimes eleitorais'] = 0 eleicao_ce_sim.input['boca de urna'] = 0 # Calcula eleicao_ce_sim.compute() n_ef_ce = eleicao_ce_sim.output print('ce: ', n_ef_ce) # Gráfico dos antecedentes e consequentes a partir dos cálculos oce.view(sim=eleicao_ce_sim) bu.view(sim=eleicao_ce_sim) ef_ce.view(sim=eleicao_ce_sim)
ce: OrderedDict([('efetivo', 0.16666666666666663)])
/ext/anaconda5/lib/python3.6/site-packages/matplotlib/figure.py:445: UserWarning: Matplotlib is currently using module://ipykernel.pylab.backend_inline, which is a non-GUI backend, so cannot show the figure. % get_backend())
Image in a Jupyter notebookImage in a Jupyter notebookImage in a Jupyter notebook
# Entrada eleicao_ce_sim.input['outros crimes eleitorais'] = 0 eleicao_ce_sim.input['boca de urna'] = 0 # Calcula eleicao_ce_sim.compute() n_ef_ce = eleicao_ce_sim.output print('ce: ', n_ef_ce) # Gráfico dos antecedentes e consequentes a partir dos cálculos oce.view(sim=eleicao_ce_sim) bu.view(sim=eleicao_ce_sim) ef_ce.view(sim=eleicao_ce_sim)
ce: OrderedDict([('efetivo', 0.16666666666666663)])
/ext/anaconda5/lib/python3.6/site-packages/matplotlib/figure.py:445: UserWarning: Matplotlib is currently using module://ipykernel.pylab.backend_inline, which is a non-GUI backend, so cannot show the figure. % get_backend())
Image in a Jupyter notebookImage in a Jupyter notebookImage in a Jupyter notebook

Crimes comuns (cc)

# Roubos (r) r = ctrl.Antecedent(np.arange(0, 196, 1), 'roubos') r['muito baixo'] = fuzz.trimf(r.universe, [0, 0, 10]) r['baixo'] = fuzz.trimf(r.universe, [6, 12, 25]) r['medio'] = fuzz.trimf(r.universe, [20, 35, 55]) r['alto'] = fuzz.trimf(r.universe, [50, 75, 150]) r['muito alto'] = fuzz.trimf(r.universe, [115, 195, 195]) r.view()
/ext/anaconda5/lib/python3.6/site-packages/matplotlib/figure.py:445: UserWarning: Matplotlib is currently using module://ipykernel.pylab.backend_inline, which is a non-GUI backend, so cannot show the figure. % get_backend())
Image in a Jupyter notebook
# Furtos (f) f = ctrl.Antecedent(np.arange(0, 321, 1), 'furtos') f['muito baixo'] = fuzz.trimf(f.universe, [0, 0, 10]) f['baixo'] = fuzz.trimf(f.universe, [7, 15, 30]) f['medio'] = fuzz.trimf(f.universe, [25, 45, 85]) f['alto'] = fuzz.trimf(f.universe, [80, 160, 240]) f['muito alto'] = fuzz.trimf(f.universe, [180, 320, 320]) f.view()
/ext/anaconda5/lib/python3.6/site-packages/matplotlib/figure.py:445: UserWarning: Matplotlib is currently using module://ipykernel.pylab.backend_inline, which is a non-GUI backend, so cannot show the figure. % get_backend())
Image in a Jupyter notebook
# Desacatos (dt) dt = ctrl.Antecedent(np.arange(0, 80, 1), 'desacatos') dt['muito baixo'] = fuzz.trimf(dt.universe, [0, 0, 1]) dt['baixo'] = fuzz.trimf(dt.universe, [0, 1, 20]) dt['medio'] = fuzz.trimf(dt.universe, [15, 25, 35]) dt['alto'] = fuzz.trapmf(dt.universe, [30, 40, 50, 65]) dt['muito alto'] = fuzz.trapmf(dt.universe, [60, 65, 80, 80]) dt.view()
/ext/anaconda5/lib/python3.6/site-packages/matplotlib/figure.py:445: UserWarning: Matplotlib is currently using module://ipykernel.pylab.backend_inline, which is a non-GUI backend, so cannot show the figure. % get_backend())
Image in a Jupyter notebook
# Desobediências (db) db = ctrl.Antecedent(np.arange(0, 90, 1), 'desobediencias') db['muito baixo'] = fuzz.trimf(db.universe, [0, 0, 1]) db['baixo'] = fuzz.trapmf(db.universe, [0, 10, 20, 30]) db['medio'] = fuzz.trapmf(db.universe, [25, 30, 40, 50]) db['alto'] = fuzz.trapmf(db.universe, [45, 55, 65, 70]) db['muito alto'] = fuzz.trapmf(db.universe, [65, 70, 90, 90]) db.view()
/ext/anaconda5/lib/python3.6/site-packages/matplotlib/figure.py:445: UserWarning: Matplotlib is currently using module://ipykernel.pylab.backend_inline, which is a non-GUI backend, so cannot show the figure. % get_backend())
Image in a Jupyter notebook
# Estimativa de efetivo (cc) ef_cc = ctrl.Consequent(np.arange(0, 3, 0.1), 'efetivo') ef_cc['muito baixo'] = fuzz.trimf(ef_cc.universe, [0, 0, 0.3]) ef_cc['baixo'] = fuzz.trimf(ef_cc.universe, [0.2, 0.5, 0.7]) ef_cc['medio'] = fuzz.trimf(ef_cc.universe, [0.6, 1.0, 1.2]) ef_cc['alto'] = fuzz.trimf(ef_cc.universe, [1.1, 1.4, 1.8]) ef_cc['muito alto'] = fuzz.trimf(ef_cc.universe, [1.7, 2.0, 2.3]) ef_cc.view()
/ext/anaconda5/lib/python3.6/site-packages/matplotlib/figure.py:445: UserWarning: Matplotlib is currently using module://ipykernel.pylab.backend_inline, which is a non-GUI backend, so cannot show the figure. % get_backend())
Image in a Jupyter notebook
# Regras (r, f, dt, db) regra_cc_ma_1 = ctrl.Rule(r['muito alto'] | f['muito alto'] | dt['muito alto'] | db['muito alto'], ef_cc['muito alto']) regra_cc_a_1 = ctrl.Rule( r['alto'] & ~f['muito alto'] & ~dt['muito alto'] & ~db['muito alto'], ef_cc['alto']) regra_cc_a_2 = ctrl.Rule(~r['muito alto'] & f['alto'] & ~dt['muito alto'] & ~db['muito alto'], ef_cc['alto']) regra_cc_a_3 = ctrl.Rule(~r['muito alto'] & ~f['muito alto'] & dt['alto'] & ~db['muito alto'], ef_cc['alto']) regra_cc_a_4 = ctrl.Rule(~r['muito alto'] & ~f['muito alto'] & ~dt['muito alto'] & db['alto'], ef_cc['alto']) regra_cc_m_1 = ctrl.Rule(r['medio'] & (f['medio'] | f['baixo'] | f['muito baixo']) & (dt['medio'] | dt['baixo'] | dt['muito baixo']) & (db['medio'] | db['baixo'] | db['muito baixo']), ef_cc['medio']) regra_cc_m_2 = ctrl.Rule((r['medio'] | r['baixo'] | r['muito baixo']) & f['medio'] & (dt['medio'] | dt['baixo'] | dt['muito baixo']) & (db['medio'] | db['baixo'] | db['muito baixo']), ef_cc['medio']) regra_cc_m_3 = ctrl.Rule((r['medio'] | r['baixo'] | r['muito baixo']) & (f['medio'] | f['baixo'] | f['muito baixo']) & dt['medio'] & (db['medio'] | db['baixo'] | db['muito baixo']), ef_cc['medio']) regra_cc_m_4 = ctrl.Rule((r['medio'] | r['baixo'] | r['muito baixo']) & (f['medio'] | f['baixo'] | f['muito baixo']) & (dt['medio'] | dt['baixo'] | dt['muito baixo']) & db['medio'], ef_cc['medio']) regra_cc_b_1 = ctrl.Rule(r['baixo'] & (f['baixo'] | f['muito baixo']) & (dt['baixo'] | dt['muito baixo']) & (db['baixo'] | db['muito baixo']), ef_cc['baixo']) regra_cc_b_2 = ctrl.Rule((r['baixo'] | r['muito baixo']) & f['baixo'] & (dt['baixo'] | dt['muito baixo']) & (db['muito baixo'] | db['baixo']), ef_cc['baixo']) regra_cc_b_3 = ctrl.Rule((r['baixo'] | r['muito baixo']) & (f['baixo'] | f['muito baixo']) & dt['baixo'] & (db['muito baixo'] | db['baixo']), ef_cc['baixo']) regra_cc_b_4 = ctrl.Rule((r['baixo'] | r['muito baixo']) & (f['baixo'] | f['muito baixo']) & (dt['baixo'] | dt['muito baixo']) & db['baixo'], ef_cc['baixo']) regra_cc_mb_1 = ctrl.Rule(r['muito baixo'] & f['muito baixo'] & dt['muito baixo'] & db['muito baixo'], ef_cc['muito baixo'])
# Cria um sistema de controle e uma simulação para crimes comuns eleicao_cc_ctrl = ctrl.ControlSystem([regra_cc_ma_1, regra_cc_a_1, regra_cc_a_2, regra_cc_a_3, regra_cc_a_4, regra_cc_m_1, regra_cc_m_2, regra_cc_m_3, regra_cc_m_4, regra_cc_b_1, regra_cc_b_2, regra_cc_b_3, regra_cc_b_4, regra_cc_mb_1]) eleicao_cc_sim = ctrl.ControlSystemSimulation(eleicao_cc_ctrl)
eleicao_cc_ctrl.view()
/ext/anaconda5/lib/python3.6/site-packages/matplotlib/figure.py:445: UserWarning: Matplotlib is currently using module://ipykernel.pylab.backend_inline, which is a non-GUI backend, so cannot show the figure. % get_backend())
Image in a Jupyter notebook
# Entrada eleicao_cc_sim.input['roubos'] = 16 eleicao_cc_sim.input['furtos'] = 94 eleicao_cc_sim.input['desacatos'] = 3 eleicao_cc_sim.input['desobediencias'] = 4 # Calcula eleicao_cc_sim.compute() n_ef_cc = eleicao_cc_sim.output print('cc: ', n_ef_cc) # Gráfico dos antecedentes e consequentes a partir dos cálculos r.view(sim=eleicao_cc_sim) f.view(sim=eleicao_cc_sim) dt.view(sim=eleicao_cc_sim) db.view(sim=eleicao_cc_sim) ef_cc.view(sim=eleicao_cc_sim)
cc: OrderedDict([('efetivo', 1.4457648401826486)])
/ext/anaconda5/lib/python3.6/site-packages/matplotlib/figure.py:445: UserWarning: Matplotlib is currently using module://ipykernel.pylab.backend_inline, which is a non-GUI backend, so cannot show the figure. % get_backend())
Image in a Jupyter notebookImage in a Jupyter notebookImage in a Jupyter notebookImage in a Jupyter notebookImage in a Jupyter notebook

Presença do crime organizado (co)

# Presença do crime organizado co = ctrl.Antecedent(np.arange(0, 101, 1), 'presenca do crime organizado') co['muito baixo'] = fuzz.trimf(co.universe, [0, 0, 15]) co['medio'] = fuzz.trimf(co.universe, [0, 50, 100]) co['muito alto'] = fuzz.trapmf(co.universe, [50, 75, 100, 100]) co.view()
/ext/anaconda5/lib/python3.6/site-packages/matplotlib/figure.py:445: UserWarning: Matplotlib is currently using module://ipykernel.pylab.backend_inline, which is a non-GUI backend, so cannot show the figure. % get_backend())
Image in a Jupyter notebook
# Estimativa de efetivo (co) ef_co = ctrl.Consequent(np.arange(0, 3.1, 0.1), 'efetivo') ef_co['muito baixo'] = fuzz.trimf(ef_co.universe, [0, 0, 0.5]) ef_co['medio'] = fuzz.trimf(ef_co.universe, [0.3, 1.0, 1.7]) ef_co['muito alto'] = fuzz.trimf(ef_co.universe, [1.5, 2.0, 2.5]) ef_co.view()
/ext/anaconda5/lib/python3.6/site-packages/matplotlib/figure.py:445: UserWarning: Matplotlib is currently using module://ipykernel.pylab.backend_inline, which is a non-GUI backend, so cannot show the figure. % get_backend())
Image in a Jupyter notebook
# Regras (co) regra_co_1 = ctrl.Rule(co['muito alto'], ef_co['muito alto']) regra_co_2 = ctrl.Rule(co['medio'], ef_co['medio']) regra_co_3 = ctrl.Rule(co['muito baixo'], ef_co['muito baixo'])
## Cria um sistema de controle e uma simulação para o número de eleitores eleicao_co_ctrl = ctrl.ControlSystem([regra_co_1, regra_co_2, regra_co_3]) eleicao_co_sim = ctrl.ControlSystemSimulation(eleicao_co_ctrl)
eleicao_co_ctrl.view()
/ext/anaconda5/lib/python3.6/site-packages/matplotlib/figure.py:445: UserWarning: Matplotlib is currently using module://ipykernel.pylab.backend_inline, which is a non-GUI backend, so cannot show the figure. % get_backend())
Image in a Jupyter notebook
# Entrada eleicao_co_sim.input['presenca do crime organizado'] = 0 # Calcula eleicao_co_sim.compute() n_ef_co = eleicao_co_sim.output print(n_ef_co) # Gráfico dos antecedentes e consequentes a partir dos cálculos co.view(sim=eleicao_co_sim) ef_co.view(sim=eleicao_co_sim)
OrderedDict([('efetivo', 0.16666666666666663)])
/ext/anaconda5/lib/python3.6/site-packages/matplotlib/figure.py:445: UserWarning: Matplotlib is currently using module://ipykernel.pylab.backend_inline, which is a non-GUI backend, so cannot show the figure. % get_backend())
Image in a Jupyter notebookImage in a Jupyter notebook

Número de eleitores

# Número de eleitores ne = ctrl.Antecedent(np.arange(0, 8501, 1), 'numero de eleitores') ne['muito baixo'] = fuzz.trimf(ne.universe, [0, 0, 500]) ne['baixo'] = fuzz.trimf(ne.universe, [200, 600, 900]) ne['medio'] = fuzz.trimf(ne.universe, [600, 1000, 1600]) ne['alto'] = fuzz.trimf(ne.universe, [1200, 1400, 1800]) ne['muito alto'] = fuzz.trapmf(ne.universe, [1500, 2000, 8500, 8500]) ne.view()
/ext/anaconda5/lib/python3.6/site-packages/matplotlib/figure.py:445: UserWarning: Matplotlib is currently using module://ipykernel.pylab.backend_inline, which is a non-GUI backend, so cannot show the figure. % get_backend())
Image in a Jupyter notebook
# Estimativa de efetivo (ne) ef_ne = ctrl.Consequent(np.arange(0, 3.1, 0.1), 'efetivo') ef_ne['muito baixo'] = fuzz.trimf(ef_ne.universe, [0, 0, 0.5]) ef_ne['baixo'] = fuzz.trimf(ef_ne.universe, [0.4, 0.6, 0.8]) ef_ne['medio'] = fuzz.trimf(ef_ne.universe, [0.7, 1.1, 1.5]) ef_ne['alto'] = fuzz.trimf(ef_ne.universe, [1.4, 1.6, 1.9]) ef_ne['muito alto'] = fuzz.trimf(ef_ne.universe, [1.8, 2.0, 2.2]) ef_ne.view()
/ext/anaconda5/lib/python3.6/site-packages/matplotlib/figure.py:445: UserWarning: Matplotlib is currently using module://ipykernel.pylab.backend_inline, which is a non-GUI backend, so cannot show the figure. % get_backend())
Image in a Jupyter notebook
# Número de eleitores (ne) regra_ne_1 = ctrl.Rule((ne['muito alto'] | ne['alto']), ef_ne['muito alto']) regra_ne_2 = ctrl.Rule(ne['alto'], ef_ne['alto']) regra_ne_3 = ctrl.Rule(ne['medio'], ef_ne['medio']) regra_ne_4 = ctrl.Rule(ne['baixo'], ef_ne['baixo']) regra_ne_5 = ctrl.Rule(ne['muito baixo'], ef_ne['muito baixo'])
## Cria um sistema de controle e uma simulação para o número de eleitores eleicao_ne_ctrl = ctrl.ControlSystem([regra_ne_1, regra_ne_2, regra_ne_3, regra_ne_4, regra_ne_5]) eleicao_ne_sim = ctrl.ControlSystemSimulation(eleicao_ne_ctrl)
eleicao_ne_ctrl.view()
/ext/anaconda5/lib/python3.6/site-packages/matplotlib/figure.py:445: UserWarning: Matplotlib is currently using module://ipykernel.pylab.backend_inline, which is a non-GUI backend, so cannot show the figure. % get_backend())
Image in a Jupyter notebook
# Entrada eleicao_ne_sim.input['numero de eleitores'] = 100 # Calcula eleicao_ne_sim.compute() n_ef_ne = eleicao_ne_sim.output print(n_ef_ne) # Gráfico dos antecedentes e consequentes a partir dos cálculos ne.view(sim=eleicao_ne_sim) ef_ne.view(sim=eleicao_ne_sim)
OrderedDict([('efetivo', 0.1722222222222222)])
/ext/anaconda5/lib/python3.6/site-packages/matplotlib/figure.py:445: UserWarning: Matplotlib is currently using module://ipykernel.pylab.backend_inline, which is a non-GUI backend, so cannot show the figure. % get_backend())
Image in a Jupyter notebookImage in a Jupyter notebook

Eleitores indígenas

# Eleitores indígenas ei= ctrl.Antecedent(np.arange(0, 100, 1), 'eleitores indigenas') ei['muito baixo'] = fuzz.trapmf(ei.universe, [0, 0, 15, 25]) ei['muito alto'] = fuzz.trapmf(ei.universe, [15, 75, 100, 100]) ei.view()
/ext/anaconda5/lib/python3.6/site-packages/matplotlib/figure.py:445: UserWarning: Matplotlib is currently using module://ipykernel.pylab.backend_inline, which is a non-GUI backend, so cannot show the figure. % get_backend())
Image in a Jupyter notebook
# Estimativa de efetivo (ei) ef_ei = ctrl.Consequent(np.arange(0, 1.9, 0.1), 'efetivo') ef_ei['muito baixo'] = fuzz.trimf(ef_ei.universe, [0, 0, 0.5]) ef_ei['muito alto'] = fuzz.trimf(ef_ei.universe, [0.2, 1, 1.8]) ef_ei.view()
/ext/anaconda5/lib/python3.6/site-packages/matplotlib/figure.py:445: UserWarning: Matplotlib is currently using module://ipykernel.pylab.backend_inline, which is a non-GUI backend, so cannot show the figure. % get_backend())
Image in a Jupyter notebook
# Eleitores indígenas (ei) regra_ei_ma_1 = ctrl.Rule(ei['muito alto'], ef_ei['muito alto']) regra_ei_mb_1 = ctrl.Rule(ei['muito baixo'], ef_ei['muito baixo'])
# Cria um sistema de controle e uma simulação para eleitores indígenas eleicao_ei_ctrl = ctrl.ControlSystem([regra_ei_ma_1, regra_ei_mb_1]) eleicao_ei_sim = ctrl.ControlSystemSimulation(eleicao_ei_ctrl)
eleicao_ei_ctrl.view()
/ext/anaconda5/lib/python3.6/site-packages/matplotlib/figure.py:445: UserWarning: Matplotlib is currently using module://ipykernel.pylab.backend_inline, which is a non-GUI backend, so cannot show the figure. % get_backend())
Image in a Jupyter notebook
# Entrada eleicao_ei_sim.input['eleitores indigenas'] = 100 # Calcula eleicao_ei_sim.compute() n_ef_ei = eleicao_ei_sim.output print(n_ef_ei) # Gráfico dos antecedentes e consequentes a partir dos cálculos ei.view(sim=eleicao_ei_sim) ef_ei.view(sim=eleicao_ei_sim)
OrderedDict([('efetivo', 0.9999999999999999)])
/ext/anaconda5/lib/python3.6/site-packages/matplotlib/figure.py:445: UserWarning: Matplotlib is currently using module://ipykernel.pylab.backend_inline, which is a non-GUI backend, so cannot show the figure. % get_backend())
Image in a Jupyter notebookImage in a Jupyter notebook

Modelo final

# Estimativa de efetivo (ce) antecedente ef_ce_a = ctrl.Antecedent(np.arange(0, 3.1, 0.1), 'efetivo (ce)') ef_ce_a['muito baixo'] = fuzz.trimf(ef_ce_a.universe, [0, 0, 0.5]) ef_ce_a['medio'] = fuzz.trimf(ef_ce_a.universe, [0.3, 1.0, 1.7]) ef_ce_a['muito alto'] = fuzz.trimf(ef_ce_a.universe, [1.5, 2.0, 2.5]) ef_ce_a.view()
/ext/anaconda5/lib/python3.6/site-packages/matplotlib/figure.py:445: UserWarning: Matplotlib is currently using module://ipykernel.pylab.backend_inline, which is a non-GUI backend, so cannot show the figure. % get_backend())
Image in a Jupyter notebook
# Estimativa de efetivo (cc) antecedente ef_cc_a = ctrl.Antecedent(np.arange(0, 3.1, 0.1), 'efetivo (cc)') ef_cc_a['muito baixo'] = fuzz.trimf(ef_cc_a.universe, [0, 0.2, 0.5]) ef_cc_a['baixo'] = fuzz.trimf(ef_cc_a.universe, [0.4, 0.6, 0.8]) ef_cc_a['medio'] = fuzz.trimf(ef_cc_a.universe, [0.7, 1.0, 1.3]) ef_cc_a['alto'] = fuzz.trimf(ef_cc_a.universe, [1.2, 1.5, 1.9]) ef_cc_a['muito alto'] = fuzz.trimf(ef_cc_a.universe, [1.8, 2, 2.2]) ef_cc_a.view()
/ext/anaconda5/lib/python3.6/site-packages/matplotlib/figure.py:445: UserWarning: Matplotlib is currently using module://ipykernel.pylab.backend_inline, which is a non-GUI backend, so cannot show the figure. % get_backend())
Image in a Jupyter notebook
# Estimativa de efetivo (co) antecedente ef_co_a = ctrl.Antecedent(np.arange(0, 3.1, 0.1), 'efetivo (co)') ef_co_a['muito baixo'] = fuzz.trimf(ef_co_a.universe, [0, 0, 0.5]) ef_co_a['medio'] = fuzz.trimf(ef_co_a.universe, [0.3, 1.0, 1.7]) ef_co_a['muito alto'] = fuzz.trimf(ef_co_a.universe, [1.5, 2.0, 2.5]) ef_co_a.view()
/ext/anaconda5/lib/python3.6/site-packages/matplotlib/figure.py:445: UserWarning: Matplotlib is currently using module://ipykernel.pylab.backend_inline, which is a non-GUI backend, so cannot show the figure. % get_backend())
Image in a Jupyter notebook
# Estimativa de efetivo (ne) antecedente ef_ne_a = ctrl.Antecedent(np.arange(0, 3.1, 0.1), 'efetivo (ne)') ef_ne_a['muito baixo'] = fuzz.trimf(ef_ne_a.universe, [0, 0.2, 0.5]) ef_ne_a['baixo'] = fuzz.trimf(ef_ne_a.universe, [0.4, 0.6, 0.8]) ef_ne_a['medio'] = fuzz.trimf(ef_ne_a.universe, [0.7, 1.0, 1.3]) ef_ne_a['alto'] = fuzz.trimf(ef_ne_a.universe, [1.2, 1.5, 1.9]) ef_ne_a['muito alto'] = fuzz.trimf(ef_ne_a.universe, [1.8, 2, 2.2]) ef_ne_a.view()
/ext/anaconda5/lib/python3.6/site-packages/matplotlib/figure.py:445: UserWarning: Matplotlib is currently using module://ipykernel.pylab.backend_inline, which is a non-GUI backend, so cannot show the figure. % get_backend())
Image in a Jupyter notebook
# Estimativa de efetivo (ei) antecedente ef_ei_a = ctrl.Antecedent(np.arange(0, 3.9, 0.1), 'efetivo (ei)') ef_ei_a['muito baixo'] = fuzz.trimf(ef_ei_a.universe, [0, 0, 0.5]) ef_ei_a['muito alto'] = fuzz.trimf(ef_ei_a.universe, [0.2, 2, 3.8]) ef_ei_a.view()
/ext/anaconda5/lib/python3.6/site-packages/matplotlib/figure.py:445: UserWarning: Matplotlib is currently using module://ipykernel.pylab.backend_inline, which is a non-GUI backend, so cannot show the figure. % get_backend())
Image in a Jupyter notebook
# Estimativa de efetivo (total) ef = ctrl.Consequent(np.arange(0, 3.1, 0.1), 'efetivo') ef['muito baixo'] = fuzz.trimf(ef.universe, [0, 0, 0.2]) ef['baixo'] = fuzz.trimf(ef.universe, [0.1, 0.5, 0.8]) ef['medio'] = fuzz.trimf(ef.universe, [0.7, 1.0, 1.3]) ef['alto'] = fuzz.trimf(ef.universe, [1.2, 1.5, 1.8]) ef['muito alto'] = fuzz.trimf(ef.universe, [1.5, 2.0, 2.5]) ef.view()
/ext/anaconda5/lib/python3.6/site-packages/matplotlib/figure.py:445: UserWarning: Matplotlib is currently using module://ipykernel.pylab.backend_inline, which is a non-GUI backend, so cannot show the figure. % get_backend())
Image in a Jupyter notebook
# Regras gerais regra_ma_1 = ctrl.Rule(ef_ce_a['muito alto'] | ef_cc_a['muito alto'] | ef_co_a['muito alto'] | ef_ne_a['muito alto'] | ef_ei_a['muito alto'], ef['muito alto']) regra_a_1 = ctrl.Rule(~ef_ce_a['muito alto'] & ef_cc_a['alto'] & ~ef_co_a['muito alto'] & ~ef_ne_a['muito alto'] & ~ef_ei_a['muito alto'], ef['alto']) regra_a_2 = ctrl.Rule(~ef_ce_a['muito alto'] & ~ef_cc_a['muito alto'] & ~ef_co_a['muito alto'] & ef_ne_a['alto'] & ef_ei_a['muito baixo'], ef['alto']) regra_m_1 = ctrl.Rule(ef_ce_a['medio'] & (ef_cc_a['medio'] | ef_cc_a['baixo'] | ef_cc_a['muito baixo']) & (ef_co_a['medio'] | ef_co_a['muito baixo']) & (ef_ne_a['medio'] | ef_ne_a['baixo'] | ef_ne_a['muito baixo']) & ef_ei_a['muito baixo'], ef['medio']) regra_m_2 = ctrl.Rule((ef_ce_a['medio'] | ef_ce_a['muito baixo']) & ef_cc_a['medio'] & (ef_co_a['medio'] | ef_co_a['muito baixo']) & (ef_ne_a['medio'] | ef_ne_a['baixo'] | ef_ne_a['muito baixo']) & ef_ei_a['muito baixo'], ef['medio']) regra_m_3 = ctrl.Rule((ef_ce_a['medio'] | ef_ce_a['muito baixo']) & (ef_cc_a['medio'] | ef_cc_a['baixo'] | ef_cc_a['muito baixo']) & ef_co_a['medio'] & (ef_ne_a['medio'] | ef_ne_a['baixo'] | ef_ne_a['muito baixo']) & ef_ei_a['muito baixo'], ef['medio']) regra_m_4 = ctrl.Rule((ef_ce_a['medio'] | ef_ce_a['muito baixo']) & (ef_cc_a['medio'] | ef_cc_a['baixo'] | ef_cc_a['muito baixo']) & (ef_co_a['medio'] | ef_co_a['muito baixo']) & ef_ne_a['medio'] & ef_ei_a['muito baixo'], ef['medio']) regra_b_1 = ctrl.Rule(ef_ce_a['muito baixo'] & ef_cc_a['baixo'] & ef_co_a['muito baixo'] & (ef_ne_a['baixo'] | ef_ne_a['muito baixo']) & ef_ei_a['muito baixo'], ef['baixo']) regra_b_2 = ctrl.Rule(ef_ce_a['muito baixo'] & (ef_cc_a['baixo'] | ef_cc_a['muito baixo']) & ef_co_a['muito baixo'] & ef_ne_a['baixo'] & ef_ei_a['muito baixo'], ef['baixo']) regra_mb_1 = ctrl.Rule(ef_ce_a['muito baixo'] & ef_cc_a['muito baixo'] & ef_co_a['muito baixo'] & ef_ne_a['muito baixo'] & ef_ei_a['muito baixo'], ef['muito baixo'])
# Regras gerais regra_ma_1 = ctrl.Rule(ef_ce_a['muito alto'] | ef_cc_a['muito alto'] | ef_ne_a['muito alto'] | ef_ei_a['muito alto'], ef['muito alto']) regra_a_1 = ctrl.Rule(~ef_ce_a['muito alto'] & ef_cc_a['alto'] & ~ef_ne_a['muito alto'] & ~ef_ei_a['muito alto'], ef['alto']) regra_a_2 = ctrl.Rule(~ef_ce_a['muito alto'] & ~ef_cc_a['muito alto'] & ef_ne_a['alto'] & ~ef_ei_a['muito alto'], ef['alto']) regra_m_1 = ctrl.Rule(ef_ce_a['medio'] & (ef_cc_a['medio'] | ef_cc_a['baixo'] | ef_cc_a['muito baixo']) & (ef_ne_a['medio'] | ef_ne_a['baixo'] | ef_ne_a['muito baixo']) & ef_ei_a['muito baixo'], ef['medio']) regra_m_2 = ctrl.Rule((ef_ce_a['medio'] | ef_ce_a['muito baixo']) & ef_cc_a['medio'] & (ef_ne_a['medio'] | ef_ne_a['baixo'] | ef_ne_a['muito baixo']) & ef_ei_a['muito baixo'], ef['medio']) regra_m_3 = ctrl.Rule((ef_ce_a['medio'] | ef_ce_a['muito baixo']) & ef_cc_a['medio'] & (ef_ne_a['medio'] | ef_ne_a['baixo'] | ef_ne_a['muito baixo']) & ef_ei_a['muito baixo'], ef['medio']) regra_m_4 = ctrl.Rule((ef_ce_a['medio'] | ef_ce_a['muito baixo']) & (ef_cc_a['medio'] | ef_cc_a['baixo'] | ef_cc_a['muito baixo']) & ef_ne_a['medio'] & ef_ei_a['muito baixo'], ef['medio']) regra_b_1 = ctrl.Rule(ef_ce_a['muito baixo'] & ef_cc_a['baixo'] & (ef_ne_a['baixo'] | ef_ne_a['muito baixo']) & ef_ei_a['muito baixo'], ef['baixo']) regra_b_2 = ctrl.Rule(ef_ce_a['muito baixo'] & (ef_cc_a['baixo'] | ef_cc_a['muito baixo']) & ef_ne_a['baixo'] & ef_ei_a['muito baixo'], ef['baixo']) regra_mb_1 = ctrl.Rule(ef_ce_a['muito baixo'] & ef_cc_a['muito baixo'] & ef_co_a['muito baixo'] & ef_ne_a['muito baixo'] & ef_ei_a['muito baixo'], ef['muito baixo']) regra_co_1 = ctrl.Rule(ef_co_a['muito alto'] & (ef_ne_a['baixo'] | ef_ne_a['muito baixo']), ef['medio'])
# Cria um sistema de controle e uma simulação total eleicao_ctrl = ctrl.ControlSystem([regra_ma_1, regra_a_1, regra_a_2, regra_m_1, regra_m_2, regra_m_3, regra_m_4, regra_b_1, regra_b_2, regra_mb_1, regra_co_1 ]) eleicao_sim = ctrl.ControlSystemSimulation(eleicao_ctrl)
eleicao_ctrl.view()
/ext/anaconda5/lib/python3.6/site-packages/matplotlib/figure.py:445: UserWarning: Matplotlib is currently using module://ipykernel.pylab.backend_inline, which is a non-GUI backend, so cannot show the figure. % get_backend())
Image in a Jupyter notebook
n_ef_ce['efetivo']
0.16666666666666663
n_ef_cc['efetivo']
1.4457648401826486
n_ef_co['efetivo']
0.16666666666666663
n_ef_ne['efetivo']
0.1722222222222222
n_ef_ei['efetivo']
0.9999999999999999
# Entrada eleicao_sim.input['efetivo (ce)'] = n_ef_ce['efetivo'] eleicao_sim.input['efetivo (cc)'] = n_ef_cc['efetivo'] eleicao_sim.input['efetivo (co)'] = n_ef_co['efetivo'] eleicao_sim.input['efetivo (ne)'] = n_ef_ne['efetivo'] eleicao_sim.input['efetivo (ei)'] = n_ef_ei['efetivo'] # Calcula eleicao_sim.compute() n_ef = eleicao_sim.output print(n_ef) # Gráfico dos antecedentes e consequentes a partir dos cálculos ef_ce_a.view(sim=eleicao_sim) ef_cc_a.view(sim=eleicao_sim) ef_co_a.view(sim=eleicao_sim) ef_ne_a.view(sim=eleicao_sim) ef_ei_a.view(sim=eleicao_sim) ef.view(sim=eleicao_sim)
OrderedDict([('efetivo', 1.8083081921559525)])
/ext/anaconda5/lib/python3.6/site-packages/matplotlib/figure.py:445: UserWarning: Matplotlib is currently using module://ipykernel.pylab.backend_inline, which is a non-GUI backend, so cannot show the figure. % get_backend())
Image in a Jupyter notebookImage in a Jupyter notebookImage in a Jupyter notebookImage in a Jupyter notebookImage in a Jupyter notebookImage in a Jupyter notebook
# Entrada eleicao_sim.input['efetivo (ce)'] = n_ef_ce['efetivo'] eleicao_sim.input['efetivo (cc)'] = n_ef_cc['efetivo'] eleicao_sim.input['efetivo (co)'] = n_ef_co['efetivo'] eleicao_sim.input['efetivo (ne)'] = n_ef_ne['efetivo'] eleicao_sim.input['efetivo (ei)'] = n_ef_ei['efetivo'] # Calcula eleicao_sim.compute() n_ef = eleicao_sim.output print(n_ef) # Gráfico dos antecedentes e consequentes a partir dos cálculos ef_ce_a.view(sim=eleicao_sim) ef_cc_a.view(sim=eleicao_sim) ef_co_a.view(sim=eleicao_sim) ef_ne_a.view(sim=eleicao_sim) ef_ei_a.view(sim=eleicao_sim) ef.view(sim=eleicao_sim)
OrderedDict([('efetivo', 1.8083081921559525)])
/ext/anaconda5/lib/python3.6/site-packages/matplotlib/figure.py:445: UserWarning: Matplotlib is currently using module://ipykernel.pylab.backend_inline, which is a non-GUI backend, so cannot show the figure. % get_backend())
Image in a Jupyter notebookImage in a Jupyter notebookImage in a Jupyter notebookImage in a Jupyter notebookImage in a Jupyter notebookImage in a Jupyter notebook

Função para entrada e processamento dos dados

def est_ef(cas): # Entrada #print(cas[0]) # ce eleicao_ce_sim.input['outros crimes eleitorais'] = cas[1] eleicao_ce_sim.input['boca de urna'] = cas[2] eleicao_ce_sim.compute() n_ef_ce = eleicao_ce_sim.output #print('ce: ', n_ef_ce) #ef_ce_a.view(sim=eleicao_sim) # cc eleicao_cc_sim.input['roubos'] = cas[3] eleicao_cc_sim.input['furtos'] = cas[4] eleicao_cc_sim.input['desacatos'] = cas[5] eleicao_cc_sim.input['desobediencias'] = cas[6] eleicao_cc_sim.compute() n_ef_cc = eleicao_cc_sim.output #print('cc: ', n_ef_cc) # co eleicao_co_sim.input['presenca do crime organizado'] = cas[7] eleicao_co_sim.compute() n_ef_co = eleicao_co_sim.output #print('co: ', n_ef_co) # ne eleicao_ne_sim.input['numero de eleitores'] = cas[8] eleicao_ne_sim.compute() n_ef_ne = eleicao_ne_sim.output #print('ne: ', n_ef_ne) # ei eleicao_ei_sim.input['eleitores indigenas'] = cas[9] eleicao_ei_sim.compute() n_ef_ei = eleicao_ei_sim.output #print('ei: ', n_ef_ei) # ef eleicao_sim.input['efetivo (ce)'] = n_ef_ce['efetivo'] eleicao_sim.input['efetivo (cc)'] = n_ef_cc['efetivo'] eleicao_sim.input['efetivo (co)'] = n_ef_co['efetivo'] eleicao_sim.input['efetivo (ne)'] = n_ef_ne['efetivo'] eleicao_sim.input['efetivo (ei)'] = n_ef_ei['efetivo'] eleicao_sim.compute() #print('-> ', eleicao_sim.output['efetivo']) # Gráfico dos antecedentes e consequentes a partir dos cálculos # ef_cc_a.view(sim=eleicao_sim) # ef_co_a.view(sim=eleicao_sim) # ef_ne_a.view(sim=eleicao_sim) # ef_ei_a.view(sim=eleicao_sim) # ef.view(sim=eleicao_sim) return(eleicao_sim.output['efetivo'])
# id oce bu r f dt db co ne ei est_ef([1, 0, 2, 16, 94, 3, 4, 0, 4161, 0])
1.9999999999999991

Cálculo da planilha

import pandas as pd
df = pd.read_excel('res5 VMD.xlsx', sheet_name='dados')
df[:5]
longitude latitude cod_localidade_tse nom_localidade nom_bairro num_local nom_local des_endereco codigo lqtd_secoes ... indigenas crimes_eleitorais boca_de_urna roubo furto desacato desobediencia CV ind_cid GRUPOS
0 -61.504226 -10.870787 89960 RONDOLÂNDIA CENTRO 1015 ESCOLA ESTADUAL OLAVO BILAC RUA MATHILDE KLEMS, S/N 61899601015 10 ... 0 0 0 0 2 1 0 0 0 336
1 -60.941759 -10.475339 89960 RONDOLÂNDIA ZONA RURAL 1066 ESCOLA ZAWA KAREY PANGYJY ALDEIA INDÍGENA ZORÓ 61899601066 1 ... 267 0 0 0 0 0 0 0 0 337
2 -60.180703 -14.107886 90867 NOVA LACERDA GLEBA SANTA AMÉLIA 1040 ESCOLA MUNICIPAL VALE DO GUAPORÉ COMUNIDADE SANTA AMÉLIA 61908671040 1 ... 0 0 0 0 0 0 0 0 0 444
3 -59.967301 -15.014093 91090 VILA BELA DA SANTÍSSIMA TRINDADE JARDIM AEROPORTO 1341 CRECHE AVIAOZINHO AVENIDA MARTIMIANO RIBEIRO DA FONSECA, S/N 25910901341 1 ... 0 0 1 0 13 0 1 0 0 440
4 -59.950224 -15.003089 91090 VILA BELA DA SANTÍSSIMA TRINDADE CENTRO 1171 CAMARA MUNICIPAL DE VILA BELA DA SANTISSIMA TR... AV. SÃO LUIZ, S/N, VILA BELA DA SS. TRINDADE 25910901171 2 ... 0 0 0 0 0 0 0 0 0 439

5 rows × 21 columns

df['efetivo'] = df[['codigo','crimes_eleitorais','boca_de_urna','roubo', 'furto', 'desacato', 'desobediencia', 'CV', 'lqtd_aptos', 'ind_cid']].apply(est_ef, axis = 1)
df.iloc[1289]
longitude -53.5287 latitude -16.9427 cod_localidade_tse 90077 nom_localidade ALTO GARÇAS nom_bairro VILA BONITO num_local 1023 nom_local E.E.P.S.G. DEPUTADO OSCAR SOARES des_endereco RUA ARARAQUARA, 149 codigo 45900771023 lqtd_secoes 9 lqtd_aptos 2861 indigenas 0 crimes_eleitorais 0 boca_de_urna 0 roubo 0 furto 0 desacato 0 desobediencia 0 CV 0 ind_cid 0 GRUPOS 71 efetivo 2 Name: 1289, dtype: object
# id oce bu r f dt db co ne ei est_ef([1, 0, 0, 0, 0, 0, 0, 0, 2861, 0])
2.0
df['efetivo'] = df[['codigo','crimes_eleitorais','boca_de_urna','roubo', 'furto', 'desacato', 'desobediencia', 'CV', 'lqtd_aptos', 'ind_cid']].apply(est_ef, axis = 1)
df['efetivo'][:5]
0 2.000000 1 0.077778 2 0.077778 3 1.000000 4 0.461111 Name: efetivo, dtype: float64
res5 = pd.ExcelWriter('res5.xlsx') df.to_excel(res5,'dados',index=False) res5.save()