kaggle-狗的品种分类

数据集是train,test两个文件夹,所有种类的狗都放在一个文件夹里,我们要使用imagefolder函数就得将train文件夹分成120个子文件夹,因为共有120种类的狗。

【1】重建数据集

def mkdir_if_not_exist(path):
    if not os.path.exists(os.path.join(*path)):
        os.makedirs(os.path.join(*path))
构建文件夹函数,因为每一个种类的狗都需新建一个文件夹。
labels = pd.read_csv(os.path.join(data_dir,label_file))
id2label = {id:label for id,label in labels.values}
我们需要将狗狗的id和label形成一个映射,可以根据其id得到其label
shutil.copy函数可以用来复制一个路径下的文件到另一个路径

【2】预测测试集狗狗的种类

我们最后得到的结果是经过softmax后的【120,1】我们将它存在result_list中
        with open(csv_path,'w') as f:
            f.write('id,'+','.join(train_valid_ds.classes)+'\n')
            for i,label in zip(ids,result_list):
                    f.write(i.split('.')[0]+','+','.join([str(file) for file in label])+'\n')
,表示分开 最后在excel表格中会分成不同格  join函数将字符串连在一起 str将格式转换为字符格式  \n表示换行

你可能感兴趣的:(kaggle-狗的品种分类)