热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

玩转Kaggle:ClassifyLeaves(叶子分类)——数据分析篇

文章目录一、ClassifyLeaves竞赛介绍二、数据分析2.1训练数据信息统计和查看2.2测试数据统计和分析2.3可视化训练数据三、整理一、ClassifyLeaves竞赛介绍

文章目录

    • 一、Classify Leaves竞赛介绍
    • 二、数据分析
      • 2.1 训练数据信息统计和查看
      • 2.2 测试数据统计和分析
      • 2.3 可视化训练数据
    • 三、整理


一、Classify Leaves竞赛介绍

描述:(叶子种类分类,总共176类,训练数据18353张图,测试数据8800张图片,每一类至少有50张图片)

The task is predicting categories of leaf images. This dataset contains 176 categories, 18353 training images, 8800 test images. Each category has at least 50 images for training. The test set is split evenly into the public and private leaderboard.

The evaluation metric for this competition is Classification Accuracy.

Good luck and have fun!

kanggle竞赛地址:
https://www.kaggle.com/c/classify-leaves



二、数据分析

import pandas as pd
import numpy as np
from d2l import torch as d2l
import seaborn as sns
import matplotlib.pyplot as plt
from sklearn.preprocessing import LabelEncoder,OneHotEncoder
import os
from PIL import Image
from torchvision import transforms

2.1 训练数据信息统计和查看

# 加载原始数据的统计目录
train_data = pd.read_csv('./data/classify-leaves/train.csv')
train_data.head()



imagelabel
0images/0.jpgmaclura_pomifera
1images/1.jpgmaclura_pomifera
2images/2.jpgmaclura_pomifera
3images/3.jpgmaclura_pomifera
4images/4.jpgmaclura_pomifera

# 训练数据共18353张图片,176类叶子
train_data.describe()



imagelabel
count1835318353
unique18353176
topimages/8006.jpgmaclura_pomifera
freq1353

# 统计训练数据label的类别和数量
train_data['label'].value_counts()

maclura_pomifera 353
ulmus_rubra 235
prunus_virginiana 223
acer_rubrum 217
broussonettia_papyrifera 214...
cedrus_deodara 58
ailanthus_altissima 58
crataegus_crus-galli 54
evodia_daniellii 53
juniperus_virginiana 51
Name: label, Length: 176, dtype: int64

# 树叶的名字统计
labels_unique = train_data['label'].unique()
labels_unique

array(['maclura_pomifera', 'ulmus_rubra', 'broussonettia_papyrifera','prunus_virginiana', 'acer_rubrum', 'cryptomeria_japonica','staphylea_trifolia', 'asimina_triloba', 'diospyros_virginiana','tilia_cordata', 'ulmus_pumila', 'quercus_muehlenbergii','juglans_cinerea', 'cercis_canadensis', 'ptelea_trifoliata','acer_palmatum', 'catalpa_speciosa', 'abies_concolor','eucommia_ulmoides', 'quercus_montana', 'koelreuteria_paniculata',..., 'sassafras_albidum', 'acer_griseum','ailanthus_altissima', 'pinus_thunbergii', 'crataegus_crus-galli','juniperus_virginiana'], dtype=object)

# 对label进行编码,并将映射表保存下来
labelencoder = LabelEncoder()
labelencoder.fit(train_data['label'])
train_data['label'] = labelencoder.transform(train_data['label'])
label_map = dict(zip(labelencoder.classes_,labelencoder.transform(labelencoder.classes_)))
label_inv_map = {v:k for k,v in label_map.items()}
label_map

{'abies_concolor': 0,'abies_nordmanniana': 1,'acer_campestre': 2,'acer_ginnala': 3,'acer_griseum': 4,'acer_negundo': 5,'acer_palmatum': 6,'acer_pensylvanicum': 7,'acer_platanoides': 8,'acer_pseudoplatanus': 9,'acer_rubrum': 10,...'zelkova_serrata': 175}

#查看前20类的统计数量和绘图查看
top20_trainData = train_data['label'].value_counts().sort_values(ascending=False).head(20)
print(top20_trainData)
plt.figure(figsize=(15,10))
sns.barplot(x=top20_trainData.index,y=top20_trainData)
plt.xticks(rotation=70)
plt.title("Top 20 categories of leaf statistics")
plt.show()



2.2 测试数据统计和分析

test_data = pd.read_csv('./data/classify-leaves/test.csv')
test_data



image
0images/18353.jpg
1images/18354.jpg
2images/18355.jpg
3images/18356.jpg
4images/18357.jpg
......
8795images/27148.jpg
8796images/27149.jpg
8797images/27150.jpg
8798images/27151.jpg
8799images/27152.jpg

8800 rows × 1 columns

# 测试数据共8800张图
test_data.describe()



image
count8800
unique8800
topimages/20051.jpg
freq1

2.3 可视化训练数据

folder_path = "./data/classify-leaves/"# 拿出几张照片看看
fig, ax = plt.subplots(nrows=3,ncols=4,sharex=True,sharey=True, figsize=(18,12)
)ax = ax.flatten()
transform = transforms.Compose([transforms.Resize((224,224)),transforms.ToTensor()])
for i in range(12):img_path = os.path.join(folder_path,train_data['image'][i])data = Image.open(img_path)data = transform(data)ax[i].imshow(data.permute((2,1,0))) # 记住将维度变换一下ax[i].set(title=train_data['label'][i])ax[i].title.set_size(25)ax[0].set_xticks([])
ax[0].set_yticks([])
plt.tight_layout()
plt.show()



三、整理


  1. 训练数据和测试数据都是RG图,可以考虑转换为灰度图进行识别(判断颜色特征对数据集是否特别重要)RGB图
  2. 给定的训练数据和测试数据都是规整的大小,但是叶子占据的比例较小,可以考虑进行图片裁减
  3. 训练数据数量不是特别大,可以考虑进行数据增强,扩大数据集数据量小
  4. 由于数据较小,使用k折交叉验证可以得到一个更好的结果

推荐阅读
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • IhaveconfiguredanactionforaremotenotificationwhenitarrivestomyiOsapp.Iwanttwodiff ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • 推荐系统遇上深度学习(十七)详解推荐系统中的常用评测指标
    原创:石晓文小小挖掘机2018-06-18笔者是一个痴迷于挖掘数据中的价值的学习人,希望在平日的工作学习中,挖掘数据的价值, ... [详细]
  • 也就是|小窗_卷积的特征提取与参数计算
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了卷积的特征提取与参数计算相关的知识,希望对你有一定的参考价值。Dense和Conv2D根本区别在于,Den ... [详细]
  • Html5-Canvas实现简易的抽奖转盘效果
    本文介绍了如何使用Html5和Canvas标签来实现简易的抽奖转盘效果,同时使用了jQueryRotate.js旋转插件。文章中给出了主要的html和css代码,并展示了实现的基本效果。 ... [详细]
  • 本文介绍了机器学习手册中关于日期和时区操作的重要性以及其在实际应用中的作用。文章以一个故事为背景,描述了学童们面对老先生的教导时的反应,以及上官如在这个过程中的表现。同时,文章也提到了顾慎为对上官如的恨意以及他们之间的矛盾源于早年的结局。最后,文章强调了日期和时区操作在机器学习中的重要性,并指出了其在实际应用中的作用和意义。 ... [详细]
  • 本文介绍了Swing组件的用法,重点讲解了图标接口的定义和创建方法。图标接口用来将图标与各种组件相关联,可以是简单的绘画或使用磁盘上的GIF格式图像。文章详细介绍了图标接口的属性和绘制方法,并给出了一个菱形图标的实现示例。该示例可以配置图标的尺寸、颜色和填充状态。 ... [详细]
  • Week04面向对象设计与继承学习总结及作业要求
    本文总结了Week04面向对象设计与继承的重要知识点,包括对象、类、封装性、静态属性、静态方法、重载、继承和多态等。同时,还介绍了私有构造函数在类外部无法被调用、static不能访问非静态属性以及该类实例可以共享类里的static属性等内容。此外,还提到了作业要求,包括讲述一个在网上商城购物或在班级博客进行学习的故事,并使用Markdown的加粗标记和语句块标记标注关键名词和动词。最后,还提到了参考资料中关于UML类图如何绘制的范例。 ... [详细]
  • ZSI.generate.Wsdl2PythonError: unsupported local simpleType restriction ... [详细]
  • 解决Cydia数据库错误:could not open file /var/lib/dpkg/status 的方法
    本文介绍了解决iOS系统中Cydia数据库错误的方法。通过使用苹果电脑上的Impactor工具和NewTerm软件,以及ifunbox工具和终端命令,可以解决该问题。具体步骤包括下载所需工具、连接手机到电脑、安装NewTerm、下载ifunbox并注册Dropbox账号、下载并解压lib.zip文件、将lib文件夹拖入Books文件夹中,并将lib文件夹拷贝到/var/目录下。以上方法适用于已经越狱且出现Cydia数据库错误的iPhone手机。 ... [详细]
  • 怀疑是每次都在新建文件,具体代码如下 ... [详细]
  • Google Play推出全新的应用内评价API,帮助开发者获取更多优质用户反馈。用户每天在Google Play上发表数百万条评论,这有助于开发者了解用户喜好和改进需求。开发者可以选择在适当的时间请求用户撰写评论,以获得全面而有用的反馈。全新应用内评价功能让用户无需返回应用详情页面即可发表评论,提升用户体验。 ... [详细]
  • Python正则表达式学习记录及常用方法
    本文记录了学习Python正则表达式的过程,介绍了re模块的常用方法re.search,并解释了rawstring的作用。正则表达式是一种方便检查字符串匹配模式的工具,通过本文的学习可以掌握Python中使用正则表达式的基本方法。 ... [详细]
author-avatar
飘泊的牛小盆友
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有