radar-parlamentar / radar

Estamos de mudança para o GitLab: https://gitlab.com/radar-parlamentar/radar.
http://radarparlamentar.polignu.org
84 stars 44 forks source link

Periodicidade mensal #193

Open leonardofl opened 10 years ago

leonardofl commented 10 years ago

Testei periodicidade mensal com o senado e com a cmsp e deu pau.

leonardofl commented 10 years ago
Traceback (most recent call last):

  File "/usr/lib/python2.7/site-packages/django/core/handlers/base.py", line 111, in get_response
    response = callback(request, *callback_args, **callback_kwargs)

  File "/usr/lib/python2.7/site-packages/django/utils/decorators.py", line 91, in _wrapped_view
    response = view_func(request, *args, **kwargs)

  File "/home/leonardo/workspaces/polignu/radar/radar_parlamentar/analises/views.py", line 55, in json_analise
    analise_temporal = analisador.get_analise_temporal()

  File "/home/leonardo/workspaces/polignu/radar/radar_parlamentar/analises/analise.py", line 68, in get_analise_temporal
    self._faz_analises()

  File "/home/leonardo/workspaces/polignu/radar/radar_parlamentar/analises/analise.py", line 93, in _faz_analises
    analiseRotacionada = rotacionador.espelha_ou_roda()

  File "/home/leonardo/workspaces/polignu/radar/radar_parlamentar/analises/analise.py", line 446, in espelha_ou_roda
    dados_partidos[partido] = numpy.dot( coords, numpy.array([[-1.,0.],[0.,1.]]) )

ValueError: objects are not aligned
saulotrento commented 10 years ago

Provavelmente o problema são meses com zero votações.

Se você olhar a função que faz a pca esse caso vai parecer estar previsto, de fato eu acredito que esteja (não estou olhando o código agora), porém o problema surge depois, na hora de rotacionar. É claro, não há necessidade de rotacionar nada. Portanto todos os cálculos feitos para ver quanto vai rotacionar e/ou espelhar deveriam ser evitados no caso de zero votações em um dos períodos, evitando por exemplo o produto escalar da linha abaixo:

dados_partidos[partido] = numpy.dot( coords, numpy.array([[-1.,0.],[0.,1.]]) )

(no caso, estou desconfiado de que pelo menos uma das dimensões de coords seja zero).

2013/11/29 Leonardo Leite notifications@github.com

Traceback (most recent call last):

File "/usr/lib/python2.7/site-packages/django/core/handlers/base.py", line 111, in get_response response = callback(request, _callback_args, *_callback_kwargs)

File "/usr/lib/python2.7/site-packages/django/utils/decorators.py", line 91, in _wrapped_view response = view_func(request, _args, *_kwargs)

File "/home/leonardo/workspaces/polignu/radar/radar_parlamentar/analises/views.py", line 55, in json_analise analise_temporal = analisador.get_analise_temporal()

File "/home/leonardo/workspaces/polignu/radar/radar_parlamentar/analises/analise.py", line 68, in get_analise_temporal self._faz_analises()

File "/home/leonardo/workspaces/polignu/radar/radar_parlamentar/analises/analise.py", line 93, in _faz_analises analiseRotacionada = rotacionador.espelha_ou_roda()

File "/home/leonardo/workspaces/polignu/radar/radar_parlamentar/analises/analise.py", line 446, in espelha_ou_roda dados_partidos[partido] = numpy.dot( coords, numpy.array([[-1.,0.],[0.,1.]]) )

ValueError: objects are not aligned

— Reply to this email directly or view it on GitHubhttps://github.com/leonardofl/radar_parlamentar/issues/193#issuecomment-29531469 .

leonardofl commented 9 years ago

Talvez esse problema já esteja resolvido e seja só questão de reativar a opção "mensal". Depois que implementamos o filtro, isso de ter períodos com zero votações acontecia bastante, então por isso acho que a situação está melhor tratada agora.

leonardofl commented 8 years ago

Erro:

######################## Exception ###########################
Traceback (most recent call last):

  File "/home/leonardo/workspaces/radar/venv/lib/python2.7/site-packages/django/core/handlers/base.py", line 111, in get_response
    response = callback(request, *callback_args, **callback_kwargs)

  File "/home/leonardo/workspaces/radar/radar/radar_parlamentar/analises/views.py", line 81, in json_analise
    analise_temporal = analisador.get_analise_temporal()

  File "/home/leonardo/workspaces/radar/radar/radar_parlamentar/analises/analise.py", line 83, in get_analise_temporal
    self._faz_analises()

  File "/home/leonardo/workspaces/radar/radar/radar_parlamentar/analises/analise.py", line 107, in _faz_analises
    analisePeriodo = analisadorPeriodo.analisa()

  File "/home/leonardo/workspaces/radar/radar/radar_parlamentar/analises/analise.py", line 205, in analisa
    self._calcula_parlamentares_2d()

  File "/home/leonardo/workspaces/radar/radar/radar_parlamentar/analises/analise.py", line 237, in _calcula_parlamentares_2d
    self.coordenadas_parlamentares = self._pca_parlamentares()

  File "/home/leonardo/workspaces/radar/radar/radar_parlamentar/analises/analise.py", line 269, in _pca_parlamentares
    self.pca = pca.PCA(matriz, fraction=1)  # faz o pca

  File "/home/leonardo/workspaces/radar/radar/radar_parlamentar/analises/pca.py", line 78, in __init__
    self.U, self.d, self.Vt = np.linalg.svd(A, full_matrices=False)

  File "/home/leonardo/workspaces/radar/venv/lib/python2.7/site-packages/numpy/linalg/linalg.py", line 1274, in svd
    _assertNonEmpty(a)

  File "/home/leonardo/workspaces/radar/venv/lib/python2.7/site-packages/numpy/linalg/linalg.py", line 170, in _assertNonEmpty
    raise LinAlgError("Arrays cannot be empty")

LinAlgError: Arrays cannot be empty

##############################################################
[01/Sep/2016 19:09:18] "GET /analises/json_analise/cdep/MES/ HTTP/1.1" 500 91124
######################## Exception ###########################
Traceback (most recent call last):

  File "/home/leonardo/workspaces/radar/venv/lib/python2.7/site-packages/django/core/handlers/base.py", line 111, in get_response
    response = callback(request, *callback_args, **callback_kwargs)

  File "/home/leonardo/workspaces/radar/radar/radar_parlamentar/radar_parlamentar/views.py", line 151, in dados_utilizados
    time = os.path.getmtime(dump_file_path)

  File "/home/leonardo/workspaces/radar/venv/lib/python2.7/genericpath.py", line 62, in getmtime
    return os.stat(filename).st_mtime

TypeError: coercing to Unicode: need string or buffer, NoneType found

##############################################################
[01/Sep/2016 19:21:10] "GET /dados/ HTTP/1.1" 500 65197
leonardofl commented 8 years ago

Contudo... ao fazer o teste desse erro, deu pra ver que a análise mensal demora pra caramba. Pelo menos na cdep. Temos q fazer uma análise PCA pra cada mês. Me parece q isso é realmente pesado, pelo menos sem nenhuma paralelização como estamos fazendo.

Pra CMSP o problema é outro. A análise sai rápido, mas temos muitos meses com muitas poucas votações, tipo de 1 a 3. Creio que isso diminua o valor do gráfico, pois o gráfico não fica legal pra tão poucas votações.

Por essas é que tô achando que não é uma boa disponibilizar a análise mensal. Em algumas situações pode dar certo, mas no caso geral parece q vai dar mais problema.

O que acham?

leonardofl commented 8 years ago

PS: na dúvida, o melhor seria deixar rolar, e ver melhor os resultados em produção. Mas estou com bastante dúvida o quanto vale a pena, considerando que o gráfico PCA serve mais para uma análise conjuntural, e talvez, politicamente falando, um mês seja um unidade muito pequena para tal análise.

Bom, de qlqr forma o bug q está acontecendo não deveria acontecer. E se ele acontece no mensal, de repente pode se manifestar em outras situações (como análise com filtro, por ex). Então a correção do bug não perde sua valia.