我正在尝试在两个数字(下限和上限)之间创建一个均匀分布,以便将它提供给sklearn的ParameterSampler。我使用以下格式的scipy.stats.uniform:
from scipy.stats import uniform
params = ParameterSampler({'bandwidth':uniform(5,50)}, 20)
但是当我得到'bandwidth'参数的随机选择时,它们并不都在5到50之间。它们中的一些比50大一些。所以我的问题是scipy.stats.uniform中的参数代表什么?它们不是下限和上限吗?文档没有显示任何参数,所以我无法从中找出答案。
答案 0 :(得分:9)
第一个参数是下限,第二个参数是分布的范围。因此,问题中的示例分布在5到55之间是统一的。
从您问题中关联的documentation引用:
一个统一的连续随机变量。
此分布在
loc
和loc + scale
之间保持不变。
loc
是第一个参数,scale
是第二个参数。
答案 1 :(得分:0)
在给定的情况下,呼叫应如下所示:
uniform.rvs(loc=5, scale=45)
即使可以直接使用参数调用发行版,scipy.stats
也具有以下逻辑:
<dist_name>.rvs(loc=<param1>, scale=<param2>, size=(Nx, Ny))