gpt4 book ai didi

python函数确定一个数字属于给定数字列表的统计可能性

转载 作者:太空宇宙 更新时间:2023-11-03 11:29:44 24 4
gpt4 key购买 nike

我正在尝试找到一个函数(最好是在 Python 中),它会告诉我一个数字与给定的数字列表有多“相似”。最终目标是找出给定数字更有可能成为哪个列表的成员。

例如,拿两个列表:

a = [5,4,8,3,6,4,7,2] 
b = [9,5,14,10,11,18,9]

该函数应采用一个新数字,并告诉我它与给定列表的相似程度。例如,假设一个假设的“isSimilar”函数将返回一个数字可能是所提供列表成员的百分比机会:

# 5 looks pretty similar to list 'a' but not list 'b'.
>>> print isSimilar(a,5)
.9

>>> print isSimilar(b,5)
.5


# 15 looks more similar to list 'b'
>>> print isSimilar(a,15)
.4

>>> print isSimilar(b,15)
.8


# 10 looks like it has roughly the same chance to be in both lists
>>> print isSimilar(a,10)
.41

>>> print isSimilar(b,10)
.5

理想情况下,这个假设函数会考虑列表的标准偏差。因此,例如,在以下两个列表中:

a = [5,6,4,5]
b = [1,9,2,8]

数字“5”与列表“a”比“b”更“相似”,因为“a”中数字的标准差要小得多。

如能为我指明正确的方向,我们将不胜感激。

最佳答案

对两组都使用估计的 pdf 怎么样?

def get_most_likely_distribution_membership(value,d1,d2):
nparam_density1 = stats.kde.gaussian_kde(d1) # can use a different kernel
nparam_density2 = stats.kde.gaussian_kde(d2)
x = np.linspace(-20, 30, 200) # maybe pre-define a range
nparam_density1 = nparam_density1(x)
nparam_density2 = nparam_density2(x)
assert d1!=d2

if nparam_density1[np.where(abs(x-(value))==min(abs(x-(value))))].tolist() > nparam_density2[np.where(abs(x-(value))==min(abs(x-(value))))].tolist():
return 1
else:
return 2

本质上,我们是说如果一个值在分布中出现的可能性更大,则它可能来自该分布。

例子:

import numpy as np
import scipy.stats as stats
import matplotlib.pyplot as plt

a = [5,4,8,3,6,4,7,2] # 1
b = [9,5,14,10,11,18,9] # 2
print(get_most_likely_distribution_membership(6,a,b))
print(get_most_likely_distribution_membership(10,a,b))

分别为 1 和 2。

关于python函数确定一个数字属于给定数字列表的统计可能性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23816327/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com