如何解决如何在scikit learning中的每个交叉验证折叠中计算互信息?
我正在scikit管道中运行功能选择和交叉验证,以优化SVR中的超参数。由于互信息特征选择取决于响应变量,因此我希望通过计算每次折叠中的互信息统计量来防止测试集泄漏到训练集中。据我了解,在将数据发送到模型之前,管道会在所有数据上运行选择器。运行互惠信息以便仅使用每个折叠中的响应数据的正确方法是什么?
cached_pipe = Pipeline(
[
('selector',SelectKBest(mutual_info_regression)),('model',SVR())
]
)
# iterating through hyperparameters (loop not shown)
hyperparameters = dict(
model__kernel=[k],model__C=C_range,model__gamma=gamma_range,model__epsilon = [epsilon],selector__k = [numFeat])
clf = gridsearchcv(
estimator = cached_pipe,param_grid = hyperparameters,cv = LeaveOneOut(),scoring = 'neg_mean_squared_error',return_train_score = 0,n_jobs= -1,verbose=0)
best_model = clf.fit(X,y.ravel())
HyperModel['feature_scores'] = best_model.best_estimator_.named_steps['selector'].scores_
HyperModel['feature_support'] = best_model.best_estimator_.named_steps['selector'].get_support()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。