【问题标题】:dataset preprocessing for python AIpython AI的数据集预处理
【发布时间】:2019-09-21 06:29:07
【问题描述】:

在将照片预定义到文件夹及其分类的初始步骤之后,我正在使用 keras 库来预处理我的数据。我不想手动这样做,所以我制作了自己的脚本,但它不起作用,有人可以帮助调试它吗? 它没有给出具体的错误,但它只是没有完成工作并停在照片ISIC_0000006wah 是照片是否被归类为癌症,yay 是照片是否被归类为良性癌症。如果数据不正确,则数据集返回 1,如果正常则返回 0。我仍然不知道问题所在。
This 是我正在使用的数据集。

顺便说一句,我还是个孩子,所以请不要指望我对编程了解太多。

数据集中的示例行:

ISIC_0000000 = 0
ISIC_0000001 = 0
ISIC_0000002 = 1
ISIC_0000003 = 0
ISIC_0000004 = 0
ISIC_0000005 = 1

我的代码:

import pandas as pd
import os
dataset = pd.read_csv('ISIC-2017_Training_Part3_GroundTruth.csv')
dataset = dataset.iloc[:, :-1]
x = 0
xb = 0
xm = 0
prevName = 'ISIC_0000000.jpg'
newName = 'yay/benign1'
while(x <= 1500):
    x = x + 1
    if prevName == dataset.iloc[x-1, 0] + '.jpg':
        if x < 10:
            prevName = 'ISIC_000000' + str(x-1) + '.jpg'
            if prevName == 'ISIC_0000005.jpg': #dataset has random hole so skips over
                x = x + 1
                prevName = 'ISIC_0000006.jpg'
        elif x < 100: 
            prevName = 'ISIC_00000' + str(x-1) + '.jpg'
        elif x < 1000:
            prevName = 'ISIC_0000' + str(x-1) + '.jpg'
        else:
            prevName = 'ISIC_000' + str(x-1) + '.jpg'
        if dataset.iloc[x-1, 1] == 1:
            xm = xm + 1
            newName = 'melanoma' + str(xm)
        else:
            xb = xb + 1
            newName = 'benign' +  str(xb)
        if newName == 'benign' +  str(xb):
            newName = 'yay/' + newName + '.jpg'
            os.rename(prevName, newName)
        else:
            newName = 'wah/' + newName + '.jpg'
            os.rename(prevName, newName)
        prevName = 'ISIC_000000' + str(x+1) + '.jpg'

编辑!!!这是我的新代码,感谢 Abhineet Gupta 能够更深入地浏览数据集,但奇怪的是停在照片 34:

import pandas as pd
import os
dataset = pd.read_csv('_ISIC-2017_Training_Part3_GroundTruth.csv')
dataset = dataset.iloc[:, :-1]
x = 0
xb = 0
xm = 0
prevName = 'ISIC_0000000.jpg'
newName = 'yay/benign1'
while(x <= 1500):
    x = x + 1
    prevName = 'ISIC_' +  str(x).zfill(7) + '.jpg'
    if prevName == dataset.iloc[x-1, 0] + '.jpg':
        if x == '0000005':
            x = x + 1
            prevName = 'ISIC_000006.jpg'
        if dataset.iloc[x-1, 1] == 1:
            xm = xm + 1
            newName = 'melanoma' + str(xm)
        else:
            xb = xb + 1
            newName = 'benign' +  str(xb)
        if newName == 'benign' +  str(xb):
            newName = 'yay/' + newName + '.jpg'
            os.rename(prevName, newName)
        else:
            newName = 'wah/' + newName + '.jpg'
            os.rename(prevName, newName)
        prevName = 'ISIC_000000' + str(x+1) + '.jpg'

最后一次编辑:原来不是代码错误,只是 .csv 文件搞砸了。感谢 Abhineet Gupta 和 mrk 的解决方案!!!

【问题讨论】:

  • 能否添加几行csv文件,以便更容易重现您的代码?谢谢
  • 我现在编辑了代码! :)

标签: python pandas csv deep-learning dataset


【解决方案1】:

根据上面的代码,错误似乎发生在下面的代码部分-

11:     x = x + 1
12:     if prevName == dataset.iloc[x-1, 0] + '.jpg':
13:         if x < 10:
14:             prevName = 'ISIC_000000' + str(x-1) + '.jpg'
15:             if prevName == 'ISIC_0000005.jpg':
16:                 x = x + 1
17:                 prevName = 'ISIC_0000006.jpg'
...
36:         prevName = 'ISIC_000000' + str(x+1) + '.jpg'

所以,如果x == 5prevName == 'ISIC_0000005.jpg'

第 11 行分配 x -&gt; 6

第 12 行和第 13 行是true

第 14 行分配 prevName -&gt; 'ISIC_0000005.jpg'

第 15 行是true

第 16 和 17 行分配 x -&gt; 7prevName -&gt; 'ISIC_0000006.jpg'

然后,if 语句之外的第 36 行(最后一行)将分配 prevName -&gt; 'ISIC_0000008.jpg'

当循环重新开始时,第 11 行分配 x -&gt; 8

第 12 行是 false,程序继续运行到 x &gt; 1500,而不进入 if 块。

要修复代码,我建议使用 str(x).zfill(7) 用前导零填充整数,例如,x = 5 返回 '0000005'x = 95 返回 '0000095'。这将消除根据x 中的位数指定前导零的需要,并简化您的代码。

【讨论】:

  • 它让程序前进,但它在 34 处停止,知道为什么吗?
  • 从代码来看,似乎没有任何理由让它特别停在 34 处。在您的 csv 中,第 34 个文件名周围是否发生了意外情况?
【解决方案2】:

由于您正在读取以'=' 作为分隔符的csv 文件,因此您必须在加载时指定,至少这是我在尝试运行您的代码时遇到的错误。

尝试将您的线路改为:

dataset = pd.read_csv('ISIC-2017_Training_Part3_GroundTruth.csv', sep = '=')

通过此更改,代码将通过您提供的整个 csv 文件为我运行。

注意:您绝对应该看看用于图像增强的库here

【讨论】:

  • 这不是大问题,但确实有帮助!谢谢!
猜你喜欢
  • 2016-08-03
  • 2018-07-28
  • 2022-12-21
  • 2023-03-15
  • 1970-01-01
  • 2022-11-17
  • 1970-01-01
  • 2023-04-04
  • 2021-06-01
相关资源
最近更新 更多