如何解决使用网格搜索了解scikit-learn kde带宽选择
我有一些要拟合高斯模型的数据。
我这样做是使用内核密度估计,我要为此选择最佳带宽。
我通过使用带有交叉验证的GridSearch来做到这一点:
from sklearn.neighbors import KernelDensity
from sklearn.model_selection import GridSearchCV
# kde function
def kde_sklearn(x,x_grid,bandwidth):
kde = KernelDensity(bandwidth=bandwidth).fit(x)
log_pdf = kde.score_samples(x_grid[:,np.newaxis])
return np.exp(log_pdf)
# optimal bandwidth selection
grid = GridSearchCV(KernelDensity(kernel='gaussian'),{'bandwidth': np.logspace(-3,1,20)},cv=10)
grid.fit(data.reshape(-1,1))
bw = grid.best_params_
对于一组特定的500欧元数据,网格搜索建议带宽为0.001。这里得到的高斯拟合值叠加到数据直方图上:
这怎么可能呢? 0.001如何比我获得的带宽更好,例如0.01?
我的代码中有错误吗?
注意:结果与简历集的大小并不相称。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。