使用 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 Dataset
和 DataLoader
之前进行分层拆分。这可以让您避免将所有代码移植到 skorch,这可能会破坏与某些集群计算框架的兼容性。
我的目标是使用神经网络进行二进制 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 Dataset
和 DataLoader
之前进行分层拆分。这可以让您避免将所有代码移植到 skorch,这可能会破坏与某些集群计算框架的兼容性。