美文网首页
Kaggle竞赛:Human Protein Atlas Ima

Kaggle竞赛:Human Protein Atlas Ima

作者: 深度学习模型优化 | 来源:发表于2019-05-25 01:08 被阅读0次

    脚本参考这里

    • 每个图像的多个标签中的单个目标标签进行了编码(是One-hot encoding,也做label smoothing)
    • 在训练数据集上对目标蛋白质分布进行可视化分析
    • 得到一个简单的图像生成器,用来生成一个目标-蛋白质-期望列表。这个返回列表中每个样本至少得到一个匹配结果
    • 在验证模型上有一些新想法
    • 使用keras构建了一个baseline模型
      • 建立一个模型参数类,该类包含构建一个模型需要的所有参数、以及加载数据和数据预处理的方法。
      • 一个可以使用CPU\GPU的数据generator,可用于训练和验证
      • 一个图像预处理器,包括尺度变换、形状变换和归一化,用来做模型学习时的数据增强
    • 通过keras的callback来跟踪损失变化,进而提高baseline模型的性能

    1 代码分析

    模型的设置

    class KernelSettings:
        
        def __init__(self, fit_baseline=False,
                     fit_improved_baseline=True,
                     fit_improved_higher_batchsize=False,
                     fit_improved_without_dropout=False):
            self.fit_baseline = fit_baseline
            self.fit_improved_baseline = fit_improved_baseline
            self.fit_improved_higher_batchsize = fit_improved_higher_batchsize
            self.fit_improved_without_dropout = fit_improved_without_dropout
    

    这里设置了4个层次。

    • fit_baseline:基础模型。
    • fit_improved_baseline:改进基础模型。
    • fit_improved_higher_batchsize:更高的batch size,有可能优化到局部最优。
    • fit_improved_without_dropout:不带dropout的模型,可能会过拟合。

    使用变量use_dropout来表示是否在网络训练中加入dropout层。

    在../input/文件下有两个文件夹。

    ['protein-atlas-eab-predictions', 'human-protein-atlas-image-classification']
    

    这里主要使用文件夹human-protein-atlas-image-classification中的内容来进行分类,在该文件夹下面有2个文件夹和2个文件分别是

    • train:包含训练的图片
    • test:包含测试的图片
    • train.csv:包含图片和标签信息
    • sample_submission.csv:包含上传数据的信息

    这里需要注意的是,train.csv的target中可能包含多个标签,因此做数据处理的时候这个要着重处理下。也就是说在一张图片中可能有多种蛋白质。

    代码继续往下,训练数据总共有31072张图片,提前想想也知道我们的数据一定存在样本不均衡的问题。用sklearn的StratifiedKFlod的方法吗?后面再看吧。

    用来测试的图片有11702张,那么
    \frac{test\_num}{train\_num} = \frac{11702}{31072} = 0.3766

    表示测试数据是训练数据的38%。这个比例还是可以的。

    对target的field做处理,这里用到了pandas的DataFram的apply函数技巧,注意使用apply对行进行处理要用到axis=1这个参数,否则默认为axis=0,就是对列进行处理了。

    对target的处理是,将每列的target都转换为一个整数类型的数值列表,使用apply函数对指定分类下的target进行标记,如果在数值列表中有,则记为1,其它为0。

    经过改变之后对标签进行统计,如下图所示


    图1 蛋白质数量分布

    由图1可知,有明显的样本不均衡的问题。

    再来看看标签之间的相关性,就是混淆矩阵


    图2 混淆矩阵

    由图2可知,Lysosomes和endosomes相关性非常高,几乎同时出现。

    相关文章

      网友评论

          本文标题:Kaggle竞赛:Human Protein Atlas Ima

          本文链接:https://www.haomeiwen.com/subject/jrtroqtx.html