如何使用zip文件中的kaggle数据集?

时间:2019-07-04 09:51:25

标签: python keras kaggle

我正在处理“ APTOS 2019失明检测”中的kaggle数据集,该数据集位于一个zip文件中。我想预处理数据集以馈入深度学习模型。

我的代码如下:

train_dir = '../input/train_images'
train_labels = pd.read_csv('../input/train.csv')
train_labels['diagnosis'] = train_labels['diagnosis'].astype(str)

test_dir = '../input/test_images'

然后预处理我写的内容:

from keras.preprocessing.image import ImageDataGenerator
train_datagen = ImageDataGenerator(
    rotation_range=40, 
    width_shift_range=0.2, 
    height_shift_range=0.2, 
    shear_range=0.2, 
    zoom_range=0.2,
    horizontal_flip=True, 
    vertical_flip=True, 
    rescale=1./255,)

test_datagen = ImageDataGenerator(rescale = 1./255)

train_generator = train_datagen.flow_from_dataframe(
    train_labels[:3295], 
    directory=train_dir, 
    x_col='id_code', y_col='diagnosis', 
    target_size=(150, 150), 
    color_mode='rgb', 
    class_mode='categorical', 
    batch_size=32, 
    shuffle=True,)

validation_generator = test_datagen.flow_from_dataframe(
    train_labels[3295:], 
    directory=train_dir, 
    x_col='id_code', y_col='diagnosis', 
    target_size=(150, 150), 
    color_mode='rgb', 
    class_mode='categorical', 
    batch_size=32, 
    shuffle=True,)

但是当我运行代码时。我得到的结果是:

找到了0个属于0类的经过验证的图像文件名。
找到属于0个类别的0个经过验证的图像文件名。

我也尝试过解压缩文件,但不会解压缩
FileNotFoundError:[错误2]没有这样的文件或目录:'train_images.zip'

# importing required modules 
from zipfile import ZipFile 

# specifying the zip file name 
file_name = "../input/train_images.zip"

# opening the zip file in READ mode 
with ZipFile(file_name, 'r') as zip: 

    # extracting all the files 
    print('Extracting all the files now...') 
    zip.extractall() 

那么有人可以帮助我解决此问题吗?我会感激的

2 个答案:

答案 0 :(得分:1)

您已经将图像解压缩到目录../home/train_images
在您的内核中运行它:

from os import listdir
listdir('../input/train_images/')


使用ImageDataGenerator.flow_from_directory()与生成器一起使用目录中的图像。
检查Keras文档:https://keras.io/preprocessing/image/#imagedatagenerator-methods

答案 1 :(得分:0)

我今天在kaggle上遇到了这个问题!这是我第一次查看已存档的数据集。

现在我知道有人说哦,只需执行listdir('../ input /'),您就会看到它们!或查看“ ../input/train_images/”,但我发现的只是zip文件和CSV!

所以我要做的是将压缩的训练和测试数据集提取到kaggle工作目录中。

这是用于空中仙人掌检测的。输入目录类似于/ input / aerial-cactus-detection /,并且具有train.zip,test.zip和train.csv(文件名和类)。

我继续

import zipfile

Dataset = "train"


with zipfile.ZipFile("../input/aerial-cactus-identification/"+Dataset+".zip","r") as z:
    z.extractall(".")

print(os.listdir("../working/"))

是的,它被提取到工作目录。对于test.zip也是如此:

Dataset = "test"


with zipfile.ZipFile("../input/aerial-cactus-identification/"+Dataset+".zip","r") as z:
    z.extractall(".")

print(os.listdir("../working/"))

我之前读过CSV:

traindf=pd.read_csv('../input/aerial-cactus-identification/train.csv',dtype=str)

testdf=pd.read_csv('../input/aerial-cactus-identification/sample_submission.csv',dtype=str)

因此,我只需在提取完后使用flow_from_dataframe 档案:

train_generator=datagen.flow_from_dataframe(
dataframe=traindf,
directory="../working/train/",
x_col="id",
y_col="has_cactus",
subset="training",
batch_size=32,
seed=42,
shuffle=True,
class_mode="binary",
target_size=(150,150))

为此我的笔记本是公开的,here