将json文件保存的数据信息利用URL下载数据以后,希望将统计出数据集中每一类图片个数,且进行可视化,看数据分布是否均匀,然后在进行相应的操作。数据还是kaggle比赛中提供的数据集,json文件内容如下:
python实现上述要求:
#导入相应的包,有些不一定用到
import sys, os, multiprocessing, urllib3, csv
from PIL import Image
from io import BytesIO
from tqdm import tqdm
import json
from collections import Counter
import matplotlib.pyplot as plt
import numpy as np
from numpy import *
import pylab
import heapq
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
#初始化一个保存类别信息的列表
key_class_list = []
j = json.load(open('train.json')) #打开json文件
images = j['images'] #json中的元素image
#这个元素是一个dict
for item in images:
#循环找出字典中class
label = item['class']
key_class_list.append((label)) #此时key_class_list保存了所有的class信息
count = Counter(key_class_list) #利用Counter函数将classlabel与classnum分离
classlabel = list(count)
classlabel=np.array(classlabel)
num = count.values()
#对类别信息与类别数目进行可视化
plt.bar(classlabel, num, color = 'g', align = 'center')
plt.title('Captian')
plt.ylabel('Num axis')
plt.xlabel('Class axis')
plt.show()
可视化结果:
从可视化结果看到这2019类数据数量是不均匀的,我们需要对数据进行数据增强,使得网络更加泛化能力与鲁棒性!