scipy.stats.uniform的论据是什么?

时间:2017-06-15 16:02:10

标签: python scipy scikit-learn

我正在尝试在两个数字(下限和上限)之间创建一个均匀分布,以便将它提供给sklearn的ParameterSampler。我使用以下格式的scipy.stats.uniform

from scipy.stats import uniform    
params = ParameterSampler({'bandwidth':uniform(5,50)}, 20)

但是当我得到'bandwidth'参数的随机选择时,它们并不都在5到50之间。它们中的一些比50大一些。所以我的问题是scipy.stats.uniform中的参数代表什么?它们不是下限和上限吗?文档没有显示任何参数,所以我无法从中找出答案。

2 个答案:

答案 0 :(得分:9)

第一个参数是下限,第二个参数是分布的范围。因此,问题中的示例分布在5到55之间是统一的。

从您问题中关联的documentation引用:

  

一个统一的连续随机变量。

     

此分布在locloc + scale之间保持不变。

loc是第一个参数,scale是第二个参数。

答案 1 :(得分:0)

在给定的情况下,呼叫应如下所示:

uniform.rvs(loc=5, scale=45)

即使可以直接使用参数调用发行版,scipy.stats也具有以下逻辑:

<dist_name>.rvs(loc=<param1>, scale=<param2>, size=(Nx, Ny))