Python keras图像数据的过采样
我正在从事Kaggle竞赛,并试图用keras解决多标签分类问题 我的数据集高度不平衡。我很熟悉这个概念,并对简单的机器学习数据集进行了测试,但现在我知道了如何处理图像和csv数据 有几个问题,但它们没有帮助我 我试图做过采样,但不知道如何接近它。我有15000张Python keras图像数据的过采样,python,tensorflow,keras,oversampling,Python,Tensorflow,Keras,Oversampling,我正在从事Kaggle竞赛,并试图用keras解决多标签分类问题 我的数据集高度不平衡。我很熟悉这个概念,并对简单的机器学习数据集进行了测试,但现在我知道了如何处理图像和csv数据 有几个问题,但它们没有帮助我 我试图做过采样,但不知道如何接近它。我有15000张png图像和train.csv数据集,看起来像: image_id class_name class_id rad_id x_min y_min x_max y_max width height
png
图像和train.csv
数据集,看起来像:
image_id class_name class_id rad_id x_min y_min x_max y_max width height
0 50a418190bc3fb1ef1633bf9678929b3 No finding 14 R11 0.0 0.0 0.0 0.0 2332 2580
1 21a10246a5ec7af151081d0cd6d65dc9 No finding 14 R7 0.0 0.0 0.0 0.0 2954 3159
2 9a5094b2563a1ef3ff50dc5c7ff71345 Cardiomegaly 3 R10 691.0 1375.0 1653.0 1831.0 2080 2336
3 051132a778e61a86eb147c7c6f564dfe Aortic enlargement 0 R10 1264.0 743.0 1611.0 1019.0 2304 2880
4 063319de25ce7edb9b1c6b8881290140 No finding 14 R10 0.0 0.0 0.0 0.0 2540 3072
Images Class
56 d106ec9b305178f3da060efe3191499a.png Nodule/Mass
38694 081d1700020b6bf0099f1e4d8aeec0f3.png Lung Opacity
50141 ff8ef73390f04480aba0be7810ef94cf.png No finding
233 253d35b7096d0957bd79cfb4b1c954e1.png No finding
2166 1951e0eba7c68aa1fbd6d723f19ee7c4.png Pleural thickening
当我有图像和csv时,如何解决这个问题
当我转换数据时,它看起来像:
image_id class_name class_id rad_id x_min y_min x_max y_max width height
0 50a418190bc3fb1ef1633bf9678929b3 No finding 14 R11 0.0 0.0 0.0 0.0 2332 2580
1 21a10246a5ec7af151081d0cd6d65dc9 No finding 14 R7 0.0 0.0 0.0 0.0 2954 3159
2 9a5094b2563a1ef3ff50dc5c7ff71345 Cardiomegaly 3 R10 691.0 1375.0 1653.0 1831.0 2080 2336
3 051132a778e61a86eb147c7c6f564dfe Aortic enlargement 0 R10 1264.0 743.0 1611.0 1019.0 2304 2880
4 063319de25ce7edb9b1c6b8881290140 No finding 14 R10 0.0 0.0 0.0 0.0 2540 3072
Images Class
56 d106ec9b305178f3da060efe3191499a.png Nodule/Mass
38694 081d1700020b6bf0099f1e4d8aeec0f3.png Lung Opacity
50141 ff8ef73390f04480aba0be7810ef94cf.png No finding
233 253d35b7096d0957bd79cfb4b1c954e1.png No finding
2166 1951e0eba7c68aa1fbd6d723f19ee7c4.png Pleural thickening
我使用图像生成器
# Create a train generator
train_generator = train_dataGen.flow_from_dataframe(dataframe = train,
directory = 'my_directory',
x_col = 'Images',
y_col = 'Class',
class_mode = 'categorical',
# target_size = (256, 256),
batch_size = 32)
我尝试了一些愚蠢的东西,但显然不起作用
# Create an instance
oversample = SMOTE()
# Oversample
train_ovsm, valid_ovsm = oversample.fit_resample(train_ovsm, valid_ovsm)
给我一个错误:
ValueError: could not convert string to float: '954984f75efe6890cfa45d0784a3a1e6.png'
非常感谢您提供的提示和优秀的教程,目前还找不到任何内容。我不确定这个答案是否让您满意,但以下是我的想法。如果我是你,我不会像你现在尝试的那样试图平衡它。依我看,这不是正确的方式。您主要关心的是这是高度不平衡的,您不确定如何正确地解决它 以下是所有人在本次比赛中为解决这一问题而首先采取的一些方法
- External dataset
- Heavy and meaningful augmentation
- Modified the loss function
外部数据集
- NIH胸部X光:
- SIIM-ACR气胸分割:
- OSIC肺纤维化进展:
- RSNA肺炎检测挑战:
- 胸部X光图像(肺炎):
您可以修改损失函数以加权预测分数。是关于这个主题的详细解释。谢谢您的时间!这是一个学校项目,我们做不同的事情。我也在研究建议的步骤,但我想知道将来如何对图像数据进行过采样。哦,我明白了。学习目的可能很好,但据我所知,使用这些过度采样技术,你不会从训练过的模型中得到任何令人惊叹的结果。-)