为何无法获取scipy.stats.randint生成的随机整数值?
问题解答
你用randint(1,5)和randint(5,10)创建的是冻结的随机分布对象(即rv_frozen实例),它只定义了随机变量的分布规则,并没有直接生成具体的随机数值。所以直接访问字典里的这个对象,得到的就是分布实例本身,不是具体的整数。
要获取具体的随机整数值,你需要调用这个分布对象的rvs()方法,示例代码如下:
from scipy.stats import randint param_distributions = {'n_estimators': randint(1, 5), 'max_depth': randint(5, 10)} # 获取单个随机值 max_depth_value = param_distributions["max_depth"].rvs() print(max_depth_value) # 生成多个随机值可指定size参数 multiple_values = param_distributions["max_depth"].rvs(size=3) print(multiple_values)
顺带提一句,这类冻结分布对象常被用于模型调优工具(比如RandomizedSearchCV),这些工具会自动调用rvs()生成参数值。如果是手动生成数值,就得自己调用这个方法。
内容的提问来源于stack exchange,提问作者fransua
相关产品推荐
相关产品推荐

