源代码显示的不同输出(机器学习)(Python)

问题描述 投票:0回答:1

我目前正在尝试从事一个小型图像机器学习项目。我找到了这个人的 Kaggle 代码,并尝试从头开始复制它。然而,即使在主要部分,我也已经遇到了错误。

我确信我的结局一定存在本地化问题,但我不知道是什么。

我的代码:

#Import Libraries

#Data processing modules
import pandas as pd 
import numpy as np 
import matplotlib.pyplot as plt
import cv2
#File directory modules
import glob as gb
import os
#Training and testing (machine learning) modules
import tensorflow as tf 
import keras

#Importing the images into the code

trainDataset = 'melanoma_cancer_dataset/train'
testDataset = 'melanoma_cancer_dataset/test'
predictionDataset = 'melanoma_cancer_dataset/skinTest'

#creating empty lists for the images to fall into for processing
training_List = []
testing_list = []
#making a classification dictionary for the two keys, benign and malignant
#used for inserting into the images
diction = {'benign' : 0, 'malignant' : 1}

#Read through the folder's length contents
for folder in os.listdir(trainDataset):
    data = gb.glob(pathname=str(trainDataset + folder + '/*.jpg'))
    print(f'{len(data)} in folder {folder}')
    #read the images, resize them in a uniform order, and store them in the empty lists
    for data in data:
        image = cv2.imread(data)
        imageList = cv2.resize(image(120,120))
        training_List.append(list(imageList))

笔记本的输出显示文件夹中存储了 0 个图像/内容。现在我有点怀疑这里发生了什么,并且希望得到一些答案。提前致谢。我也在使用自己的 VScode。

这是我的文件的屏幕截图:

python machine-learning operating-system kaggle
1个回答
1
投票

根据您的文件夹结构和您提供的代码,问题是您没有在文件夹路径末尾添加尾部斜杠。 在提供的代码中,您尝试将文件夹名称直接与路径连接起来。但是,如果您错过了斜杠或者文件夹变量不包含尾部斜杠,则可能会导致路径不正确。

像这样更新路径:

trainDataset = 'melanoma_cancer_dataset/train/'
testDataset = 'melanoma_cancer_dataset/test/'
predictionDataset = 'melanoma_cancer_dataset/skinTest/'

你的代码正在做什么在这里:

for folder in os.listdir(trainDataset):
    data = gb.glob(pathname=str(trainDataset + folder + '/*.jpg'))

它会转到trainDataset的路径,然后使用

os.listdir()
列出那里的文件夹(命名为恶性和良性)。 这些路径连接起来生成最终的图像路径:

data = gb.glob(pathname=str(trainDataset + folder + '/*.jpg'))

此外,该行中存在轻微的语法错误:

imageList = cv2.resize(image(120,120))

应该是

cv2.resize(image, (120, 120))

您附加到training_List的方式也可能是错误的。您需要在附加之前将 imageList 转换为列表,或者如果您想保留图像数组结构,则直接附加 imageList

完整更新代码:

# Data processing modules
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import cv2
# File directory modules
import glob as gb
import os
# Training and testing (machine learning) modules
import tensorflow as tf
import keras

# Directories
trainDataset = 'melanoma_cancer_dataset/train/'
testDataset = 'melanoma_cancer_dataset/test/'
predictionDataset = 'melanoma_cancer_dataset/skinTest/'

# Empty list for the images
training_List = []
testing_list = []

# Classification dictionary
diction = {'benign': 0, 'malignant': 1}

# Read through the folder's contents
for folder in os.listdir(trainDataset):
    # Corrected the path pattern and added a slash
    data = gb.glob(pathname=str(trainDataset + folder + '/*.jpg'))
    print(f'{len(data)} in folder {folder}')
    # Read the images, resize them, and store them in the list
    for file_path in data:
        image = cv2.imread(file_path)
        # Corrected the resize function call
        imageList = cv2.resize(image, (120, 120))
        # Append the image array directly
        training_List.append(imageList)

print(f'Total images in training set: {len(training_List)}')
© www.soinside.com 2019 - 2024. All rights reserved.