我正在使用keras库对数据进行预处理,这是在将照片预先定义到带有分类的文件夹的初始步骤之后。我不想手动这么做,所以我自己制作了脚本,但是它不起作用,有人能帮我调试一下吗?它没有给出一个具体的错误,但它只是没有完成工作,并停留在照片ISIC_0000006。wah是如果照片被分类为癌变,yay是如果照片被分类为良性癌症。dataset返回一个1 (如果它是坏的)和0 (如果它是好的)。我还是不知道有什么问题。
这是我正在使用的数据集。
顺便说一下,我还只是个孩子,所以请不要指望我对编程有太多的了解。
数据集中的示例行:
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的解决方案!
发布于 2019-05-02 18:11:21
基于上述代码,错误似乎发生在以下代码部分-
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 == 5和prevName == 'ISIC_0000005.jpg'
第11行指定x -> 6,
第12行和13行是true,
第14行分配prevName -> 'ISIC_0000005.jpg'
第15行是true,
第16行和第17行分配x -> 7和prevName -> 'ISIC_0000006.jpg'
然后,位于if语句之外的第36行(最后一行)将分配prevName -> 'ISIC_0000008.jpg'
当循环重新启动时,第11行分配x -> 8,
第12行是false,程序继续运行直到x > 1500,而不进入if块。
要修复代码,我建议使用str(x).zfill(7),它用前导零填充整数,例如,对于x = 5返回'0000005',对于x = 95返回'0000095'。这将消除根据x中的数字数指定前导零的需要,并简化代码。
发布于 2019-05-02 17:53:29
由于使用csv作为分隔符读取'='文件,所以必须在加载时指定这一点,至少这是我在尝试运行代码时遇到的错误。
尝试将您的行更改为:
dataset = pd.read_csv('ISIC-2017_Training_Part3_GroundTruth.csv', sep = '=')通过此更改,代码将在您提供的整个csv文件中运行。
注释:--一个库,您一定要看一下,因为图像增强是可以找到的https://github.com/mdbloice/Augmentor。
https://stackoverflow.com/questions/55957439
复制相似问题