Оптимальная функция для сканирования матрицы NumPyPython

Программы на Python
Anonymous
Оптимальная функция для сканирования матрицы NumPy

Сообщение Anonymous »

У меня есть двоичный двумерный массив numpy, который представляет транзакции и элементы. Для товара I (представленного в виде столбцов) я хочу вычислить общее количество транзакций (представленных в виде строк), в ходе которых был приобретен этот товар, всех товаров, которые были приобретены вместе с товаром i, и всех транзакций, связанных с этими товарами. Это делается для расчета поддержки, уверенности и подъема между элементами. Моя текущая реализация использует вложенный цикл, но для большого набора данных это занимает слишком много времени. Есть ли способ оптимально сканировать матрицу, когда мне нужно каждый раз сканировать ее целиком?
Вот мой код с примером массива.
import numpy as np
results = []
data = np.array([[0,1,0,1],[1,1,0,1],[0,0,0,1],[1,1,1,1]])
N = data.shape[0] #total transactions
for i in range(4): # for each item i
#transactions% where item i was purchased
mask_i = data[:,i] == 1
support_i = data[mask_i].shape[0]/N
for j in range(4): # check all items j
#transactions where both i and j are purchased
mask_j = data[:,j] == 1
support_j = data[mask_j].shape[0]/N #transactions% where j is purchased
mask_c = np.logical_and(mask_i,mask_j) # mask for where both i and j were purchased
confidence = (data[mask_c].shape[0]/N) / support_i
lift = confidence/support_j
results.append([i,j,confidence,lift]) #store combination

В списке результатов будет показана каждая определенная комбинация элемента с другими элементами.
[[0, 0, 1.0, 2.0], [0, 1, 1.0, 1.3333333333333333], [0, 2, 0.5, 2.0], [0, 3, 1.0, 1.0], [1, 0, 0.6666666666666666, 1.3333333333333333], [1, 1, 1.0, 1.3333333333333333], [1, 2, 0.3333333333333333, 1.3333333333333333], [1, 3, 1.0, 1.0], [2, 0, 1.0, 2.0], [2, 1, 1.0, 1.3333333333333333], [2, 2, 1.0, 4.0], [2, 3, 1.0, 1.0], [3, 0, 0.5, 1.0], [3, 1, 0.75, 1.0], [3, 2, 0.25, 1.0], [3, 3, 1.0, 1.0]]


Подробнее здесь: https://stackoverflow.com/questions/786 ... mpy-matrix

Вернуться в «Python»