Как сгенерировать массив 1,0 с распределением Пуассона в python

Мне нужно сгенерировать шипы с распределением Пуассона, его функция np.random.poisson(). но в самом простом объяснении, как я могу сгенерировать массив 0,1, число 1 равно 3, но размер массива должен быть [1,7]

Это означает следующее: a=[1,0,1,0,1,0,0].... только числа 1 должны быть распределены с помощью функции Пуассона в этом массиве.

Я очень сильно застрял в этой проблеме

Что такое шипрейн? Должен ли ваш массив a быть 1, если ничья из распределения Пуассона превышает некоторый порог?

blthayer 08.07.2019 20:15

Вы можете рассматривать поезд с шипами как массив 0, 1... просто нам нужно сказать, чтобы распределить эти три единицы с функцией Пуассона в массиве 1 * 7

Atefeh Hedayati 08.07.2019 20:20

@blthayer Я предполагаю, что это связано с моделированием нейронного кодирования: cns.nyu.edu/~david/handouts/poisson.pdf

Z4-tier 08.07.2019 20:21

спасибо за ваш ответ ... я изучал этот документ раньше, но я застрял в кодировании ... мне просто нужно знать, как можно сказать, что функция possion генерирует 3 единицы в 3 разных местах массива.

Atefeh Hedayati 08.07.2019 20:26
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
4
559
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Спасибо @Z4-tier за эта ссылка. Внизу страницы 5 начинается раздел, озаглавленный «Создание последовательностей импульсов Пуассона».

Вот одно из возможных решений:

"""Generate a spike train. See page 5 and 6 here:
https://www.cns.nyu.edu/~david/handouts/poisson.pdf

This will use the first method described.
"""
import numpy as np
# Seed the generator for consistent results.
np.random.seed(42)

# We need to start with some sort of r(t). Presumably the asker of this
# question has access to this.
r = np.array([100, 500, 600, 700, 300, 200, 900])

# Define our time interval, delta t. Use one millisecond as suggested
# in the paper.
dt = 0.001

# Draw 7 random numbers on the interval [0, 1)
x = np.random.rand(7)

# Initialize output.
spikes = np.zeros_like(r)

# If x[i] <= r * dt, generate a spike.
mask = x <= r * dt

# Set to 1.
spikes[mask] = 1

print(spikes)

Выход:

[0 0 0 1 1 1 1]

Нет, это не генерирует 3 шипа. Фиксация количества шипов неуместна, учитывая мое понимание статьи.

@AtefehHedayati - Что вы имеете в виду, что это не работает для вас? Этот код выдает ошибку?

blthayer 08.07.2019 21:03

в нем нет ошибки, но мне нужно исправить количество единиц .... должно быть 3, а не 4 ... я получил ответ от @jonathan post .... спасибо :)

Atefeh Hedayati 09.07.2019 06:57

@AtefehHedayati - ответ Джонатана также не исправляет количество единиц. В его решении, чтобы зафиксировать количество единиц, вы должны были оба запустить генератор случайных чисел а также и настроить ввод expectation. Точно так же в моем ответе, чтобы исправить количество единиц, вам нужно заполнить генератор случайных чисел и настроить массив r.

blthayer 09.07.2019 16:44

да, верно ... количество 1 не фиксировано ... я также использовал ваш код в своей проблеме ... и почему-то я был неправ ... так как ваш ответ был правильным ... так, как вы сказали, это правильно способ, которым я могу генерировать всплески с помощью распределения Пуассона, и я ценю вашу помощь .... но ответ @jonathan также помог мне определить диапазон

Atefeh Hedayati 09.07.2019 20:02

Я бы попробовал определение черных полос (как видно из шипов, используемых при кодировании нейронов), что заставляет вас ограничивать пределы содомена функции, где бины - это ваша длина из 7 элементов.

    import numpy as np


    def black_bars(expectation, bins):
        poisson = np.random.poisson(expectation, bins)
        bounded_poisson = np.clip(poisson, a_min=0, a_max=1)

        print('original -> {0}'.format(poisson))
        print('bounded -> {0}'.format(bounded_poisson))


    black_bars(.5, 7)

выход

    original -> [0 1 2 0 1 3 2]
    bounded -> [0 1 1 0 1 1 1]

Большое спасибо @jonathan ... это именно то, что я хочу ... это мне очень помогает ... мне нужно было указать диапазон для функции Пуассона ... спасибо за то, что уделили мне время ... молодец

Atefeh Hedayati 09.07.2019 06:59

Ой.извините... я сделал это :(

Atefeh Hedayati 09.07.2019 13:26

Другие вопросы по теме