微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将随机变量传递给 sklearn 随机搜索RandomizedSearchCV

如何解决将随机变量传递给 sklearn 随机搜索RandomizedSearchCV

下面代码中的 reciprocal()expon() 有什么用?

svm_grid_R = {'kernel':["linear","rbf"],'C': reciprocal(20,200000),"gamma" : expon(scale=1.0)}

为什么我们不能只使用 range()expon(scale=1.0)reciprocal(20,200000) 表示什么范围?

对于上下文,使用这些参数的代码如下:

svm_reg = SVR()
rnd_search = RandomizedSearchCV(svm_reg,param_distributions=svm_grid_R,n_iter=50,cv=5,scoring='neg_mean_squared_error',verbose=2,random_state=42)
rnd_search.fit(housing_prepared,housing_labels)

解决方法

我建议您检查脚本中导入函数的部分,以确定它们是什么。从你的问题中,我推断出以下内容:

  • reciprocal 应该来自 from scipy.stats import reciprocal,它会给你一个倒数随机变量。
  • expon 应该来自 from scipy.stats import expon,它会给你一个指数随机变量。

在您的代码中,您将这些随机变量作为 Cgamma 参数传递给随机搜索。这意味着搜索使用的随机参数将从这两个分布中采样。

从技术上讲,您还可以使用 range 来告诉搜索从给定序列中随机抽取数字。另一种方法是向搜索传递一个随机变量,从中采样随机参数。您的代码采用了第二种方法。

为了更好地理解第二种方法的全部内容,请尝试以下操作:

# Import the distribution
from scipy.stats import expon
# Initialize a random variable with lambda=1 (scale=1)
exponential_rv = expon(scale=1)
# Draw a random sample from this distribution
exponential_rv.rvs()
> 0.780028923390962

在这种特定情况下,您的搜索会将 C=0.780028923390962 传递给您的支持向量机。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。