python人工智能的数据集预处理

python人工智能的数据集预处理,python,pandas,csv,deep-learning,dataset,Python,Pandas,Csv,Deep Learning,Dataset,我正在使用一个keras库对我的数据进行预处理,这是在将照片预先定义到带有分类的文件夹中的初始步骤之后。我不想手动操作,所以我自己编写了脚本,但它不工作,有人能帮我调试一下吗? 它没有给出一个具体的错误,但它只是没有完成这项工作,并在photoISIC_uu0000006处停止wah是指照片被归类为癌症,yay是指照片被归类为良性癌症。如果数据集不好,则返回1,如果正常,则返回0。我仍然不知道这个问题。 是我正在使用的数据集 顺便说一句,我还是个孩子,所以请不要期望我对编程了解太多 数据集中的样

我正在使用一个keras库对我的数据进行预处理,这是在将照片预先定义到带有分类的文件夹中的初始步骤之后。我不想手动操作,所以我自己编写了脚本,但它不工作,有人能帮我调试一下吗? 它没有给出一个具体的错误,但它只是没有完成这项工作,并在photo
ISIC_uu0000006
处停止
wah
是指照片被归类为癌症,
yay
是指照片被归类为良性癌症。如果数据集不好,则返回
1
,如果正常,则返回
0
。我仍然不知道这个问题。
是我正在使用的数据集

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

数据集中的样本行:

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'
dataset = pd.read_csv('ISIC-2017_Training_Part3_GroundTruth.csv', sep = '=')
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'
dataset = pd.read_csv('ISIC-2017_Training_Part3_GroundTruth.csv', sep = '=')
将熊猫作为pd导入
导入操作系统
数据集=pd.read\u csv(“ISIC-2017\u培训\u第3部分\u GroundTruth.csv”)
dataset=dataset.iloc[:,:-1]
x=0
xb=0
xm=0
prevName='ISIC_0000000.jpg'
newName='yay/benign1'

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

尝试将您的行更改为:

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'
dataset = pd.read_csv('ISIC-2017_Training_Part3_GroundTruth.csv', sep = '=')
通过此更改,代码将在您提供的整个csv文件中运行


注意:找到了一个用于图像增强的库。

基于上述代码,错误似乎出现在下面的代码部分-

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'
11:x=x+1
12:如果prevName==dataset.iloc[x-1,0]+'.jpg':
13:如果x<10:
14:prevName='ISIC_000000'+str(x-1)+'.jpg'
15:如果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_u0000005.jpg'

第11行分配
x->6

第12行和第13行为
true

第14行分配
prevName->“ISIC_u0000005.jpg”

第15行为

第16行和第17行分配
x->7
prevName->'ISIC\u0000006.jpg'

然后,在
if
语句之外的第36行(最后一行)将分配
prevName->“ISIC\u0000008.jpg”

当循环重新启动时,第11行分配
x->8

第12行为
false
,程序继续运行直到
x>1500
,而不输入
if

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

能否添加几行csv文件,以便至少,复制代码更容易?谢谢,我现在编辑了代码!:)这不是大问题,但确实有帮助!谢谢它让程序前进,但它停在34,你知道为什么吗?从代码上看,似乎没有任何理由说明它会停在34。在您的csv中,第34个文件名周围是否发生了意外情况?