Использование функции range () в качестве параметра в scipy.stats hypergeom.pmf () - PullRequest
0 голосов
/ 10 июня 2019

Я работаю над программой, которая вычисляет значение ошибки, генерируя список PMF гипергеометрического распределения по диапазону значений, вычисляя попарно произведение этого списка и другого списка, нормализуя список с использованием общего знаменателя, затем суммируем часть списка.

Код хорошо работал на моем ноутбуке с Windows (работает на Python 3.7.1 на Anaconda) и в среде Ubuntu (Python 3.6.7), но не будет работать на новом рабочем столе Windows (на Python 3.7.3) , Я уже просматривал документацию по scipy, но не так много подробностей о том, что функция hypergeom.pmf может обрабатывать в качестве параметров. Я считаю, что это как-то связано с новой средой и, возможно, с установленной версией Python.

from scipy.stats import hypergeom as hg

def get_error(self, stop: int, audit: int) -> float:
        # Get posterior distribution
        posterior = hg.pmf(stop, self.total_votes, range(0, self.total_votes+1), audit)
        posterior = [posterior[i]*self.prior[i] for i in range(len(posterior))]
        posterior /= sum(posterior)

        return sum(posterior[range(self.total_votes//2 + 1)])

Обычно posterior = hg.pmf(stop, self.total_votes, range(0, self.total_votes+1), audit) возвращает список PMF, а затем функция возвращает число с плавающей запятой в диапазоне от 0 до 1. При запуске на новом компьютере программа не продолжает работу и выдает следующее сообщение об ошибке:

...
    test_error = self.get_error(test_stop, audit_size)
  File "C:\...\filename.py", line 77, in get_error
    posterior = hg.pmf(stop, self.total_votes, list(range(0, self.total_votes+1)), audit)
  File "C:\...\AppData\Local\Programs\Python\Python37\lib\site-packages\scipy\stats\_distn_infrastructure.py", line 2942, in pmf
    _a, _b = self._get_support(*args)
  File "C:..\AppData\Local\Programs\Python\Python37\lib\site-packages\scipy\stats\_discrete_distns.py", line 355, in _get_support
    return np.maximum(N-(M-n), 0), np.minimum(n, N)
TypeError: unsupported operand type(s) for -: 'int' and 'list'

Кажется, функция hypergeom.pmf () больше не принимает range () в качестве параметра, но код отлично работает в двух других средах. Может ли быть установлено обновление или устаревший пакет на новом компьютере, который был неправильно установлен / обновлен при настройке новой среды?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...