Как рассчитать значение модуля для набора значений в Python? - PullRequest
0 голосов
/ 28 февраля 2019

В одном материале я нашел одну формулу для расчета точности, как показано ниже

enter image description here

Здесь a и b - набор значений.После многих поисков в интернете я обнаружил, что модуль означает остаток или абсолютное значение.Здесь я принимаю модуль в качестве абсолютного значения, и мой код Python для приведенной выше формулы выглядит следующим образом:

import numpy as np

def intersection(lst1, lst2):
    return list(set(lst1) & set(lst2))

a = [7,21]
b = [11, 7, 27, 21]

a_intersect_b=intersection(a,b)
print(" a_intersect_b : ",a_intersect_b)

mod_a_intersect_b=[abs(x) for x in a_intersect_b]
print("|a_intersect_b| : ",mod_a_intersect_b)

mod_a=[abs(x) for x in a]
print("|a| : ",mod_a)

numerator=np.array(mod_a_intersect_b, dtype=np.float)
denominator=np.array(mod_a, dtype=np.float)

print(" mod_a_intersect_b /  mod_a : ", numerator/denominator)

Здесь я получаю 2 выходных значения.Но в материале и в целом точность является единственной ценностью.Если размер списка увеличивается, то выходные значения также увеличиваются.Наконец я обнаружил, что неправильно понял значение модуля здесь.Направьте меня, чтобы получить значение одинарной точности согласно приведенной выше формуле.Заранее спасибо.

Примечание: В формуле a и b задаются значения.Поэтому я использовал список в моем коде.Также наставьте меня, если я использую другую опцию, чтобы упомянуть множество значений в python, тогда я могу получить значение с одинарной точностью

1 Ответ

0 голосов
/ 28 февраля 2019

Как упомянул @Hoog в ГИС-комментарии, операция модуля в случае точности означает мощности некоторого набора (всего несколько элементовнабор), поэтому вы можете определить точность следующим образом:

def precision(a, b):
    """
    a: set, relevant items
    b: set, retrieved items
    returns: float, precision value
    """
    return len(a & b) / len(a)

len(a) возвращает множество элементов набора, т. е. количество элементов, операция |a|.

Если a, b - это списки, сначала оберните их в наборы:

def precision(a, b):
    """
    a: set, relevant items
    b: set, retrieved items
    returns: float, precision value
    """
    a, b = set(a), set(b)
    return len(a & b) / len(a)

Кроме того, в науке о данных и смежных областях точность представляет собой метрику, которая вычисляет отношение 'true positives' / ('true positives' + 'false positives').Это то же самое, что описано в других терминах, но стандартные реализации точности вам не помогут.

...