使用 Pytorch 进行分层交叉验证

Stratified cross validation with Pytorch

我的目标是使用神经网络进行二进制 class化。 问题是数据集不平衡,我有 90% 的 class 1 和 10% 的 class 0。 为了处理它,我想使用分层交叉验证。

问题是我正在使用 Pytorch,我找不到任何示例,文档也没有提供,而且我是学生,对神经网络很陌生。

有人可以帮忙吗? 谢谢!

查看 skorch. It's a scikit-learn compatible neural network library that wraps PyTorch. It has a function CVSplit 进行交叉验证,或者您可以使用 sklearn。 来自文档:

net = NeuralNetClassifier(
   module=MyModule,
   train_split=None,
)
from sklearn.model_selection import cross_val_predict
y_pred = cross_val_predict(net, X, y, cv=5)

我发现的最简单的方法是在将数据传递给 Pytorch DatasetDataLoader 之前进行分层拆分。这可以让您避免将所有代码移植到 skorch,这可能会破坏与某些集群计算框架的兼容性。