优先识别数组元素的概率

问题描述 投票:0回答:1

我正在尝试使用Python解决以下问题。

有以下数组:

Ar1: {s1, s2, s3}
Ar2: {s2, s3}
Ar3:{s1}
Ar4:{s2}
Ar5: {s3, s4}
Ar6: {s1}

这些数组全部组合成一个 AR_ALL,并且必须计算识别每个 s 的概率。

考虑到,由于 s1 和 s2 也是单独找到的,那么它们比 s3 更有优势,例如 s3 也总共出现了 3 次,如 s1、s2。

但优先级本身也需要以某种方式确定。

实际上问题看起来像这样。 Ar1 - 主题为 s1、s2、s3 的文章。 Ar2 - 主题为 s2、s3 等的文章。这些都是同一作者的文章。我需要计算这个作者遇到主题s1的概率是多少,s2的概率是多少等等,即计算识别每个主题的概率。

也就是说,作者总共在主题 s1 上写了 3 次,在主题 s2 上写了 3 次,在主题 s3 上写了 3 次,在主题 s4 上写了 1 次。然而,由于主题 s1 和 s2 是在文章中单独找到的;主题 s1 和 s2 有某种优先级。

有必要根据主题总数来确定该作者识别每个主题的概率

python algorithm statistics probability
1个回答
0
投票
from collections import Counter

# Given arrays
Ar1 = {'s1', 's2', 's3'}
Ar2 = {'s2', 's3'}
Ar3 = {'s1'}
Ar4 = {'s2'}
Ar5 = {'s3', 's4'}
Ar6 = {'s1'}

# Combine all arrays into one
AR_ALL = Ar1 | Ar2 | Ar3 | Ar4 | Ar5 | Ar6

# Calculate topic frequencies
topic_frequencies = Counter(topic for article in [Ar1, Ar2, Ar3, Ar4, Ar5, Ar6] for topic in article)

# Calculate individual and combined frequencies for s1 and s2
s1_frequency = topic_frequencies['s1']
s2_frequency = topic_frequencies['s2']
s1_s2_frequency = len([article for article in [Ar1, Ar2, Ar6] if 's1' in article and 's2' in article])

# Calculate probabilities with priority
s1_probability = (s1_frequency + s1_s2_frequency) / len(AR_ALL)
s2_probability = (s2_frequency + s1_s2_frequency) / len(AR_ALL)
s3_probability = topic_frequencies['s3'] / len(AR_ALL)
s4_probability = topic_frequencies['s4'] / len(AR_ALL)

# Display probabilities
print(f"Probability of identifying s1: {s1_probability:.2%}")
print(f"Probability of identifying s2: {s2_probability:.2%}")
print(f"Probability of identifying s3: {s3_probability:.2%}")
print(f"Probability of identifying s4: {s4_probability:.2%}")
© www.soinside.com 2019 - 2024. All rights reserved.