python - 没有标准偏差值的范围内的 Numpy 正态分布
问题描述
我必须从机器学习任务的间隔中生成随机值。我想在 numpy 的范围内有一个正态分布,我在网上搜索它。我发现了这个问题How to get a normal distribution within a range in numpy? 但我没有任何标准偏差列。
值是这样的:
−21.8 ± 6.7
−4.3 ± 0.1
−7.4 ± 0.5
所以我知道最小值和最大值。但是没有标准偏差。
谢谢。
编辑:
我想从这些值中生成 10 个值。第一个值是平均值。第二个值显示最大值(和最小值)与平均值之间的距离。要清楚:
x = -21.8
图表的最小值将为 -21.8 - 6.7 = -29.5
图表的最大值将为 -21.8 + 6.7 = -15.1
解决方案
您可以使用scipy.stats.truncnorm从随机正态变量中抽取多个样本。但是,对于任何正态随机变量,都需要指定变量均值和标准差。我知道您不知道标准,但它极大地影响了数据的生成方式。让我们看几个从一个极端到另一个极端的例子:
from scipy.stats import truncnorm
import seaborn as sns
m = -21.8
w = 6.7
for s in [0.5, 2, 7]:
lower, upper = -w/s, w/s
r = truncnorm(a=lower, b=upper, loc=m, scale=s)
size = 1_000
sample = r.rvs(size)
sns.distplot(sample)
结果是:
您可以看到,s=7
分布几乎是平坦且均匀的,另一方面,因为s=0.5
它极不可能超出范围 - 您需要与平均值相差 13-14 个标准差。
推荐阅读
- java - 错误:在包“android”中找不到属性“requestLegacyExternalStorage”和“preserveLegacyExternalStorage”的资源标识符
- python - 我收到此错误有人可以帮助我吗
- git - 在修订版 go/database/v1.0.1 阅读 github.com/username/kit/go/database/go/database/go.mod:未知修订版 go/database/v1.0.1
- r - 如何通过保持两个 json 结构在 R 中合并两个 JSON 对象
- android - Firebase Flutter 实时数据库基础加函数数学
- docker - 使用 docker-compose(不使用端口)从另一个 docker 容器中调用代码?
- django-rest-framework - 加快geodjango的django rest框架中的请求处理
- javascript - AR 不支持 xampp
- android - 找不到 com.google.firebase:firebase-analytics:
- python - 对列中所有值的条件字符串操作,Pandas,Python