如何在 X_train、y_train、X_test、y_test 中分割图像数据集?

Md.*_*que 2 python dataset pandas

我有一个类似于以下结构的数据集:

Dataset/
   |
   |
   -----Pothole/
   |         |
   |         ------ umm001.jpg
   |         |
   |         ------ abd.jpg
   |         |
   |         ------ 
   |         |
   |
   |
   ----Road/
         |
         ------road005.jpg
         |
         ------ummm.jpg
         |
         ------
         |
Run Code Online (Sandbox Code Playgroud)

我想将此数据集拆分为X_train, y_train, X_test, y_test.

这样:

### data: shuffled and split between train and test
(X_train, y_train), (X_test, y_test) = mnist.load_data()
Run Code Online (Sandbox Code Playgroud)

或者,

(X_train, y_train), (X_test, y_test) = train_test_split(X,y, test_size=0.20)
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

paz*_*s10 5

您可以使用该模块构建Xy数组os

import os

X = []
y = []
base_dir = '<full path to dataset folder>/'
for f in sorted(os.listdir(base_dir)):
    if os.path.isdir(base_dir+f):
        print(f"{f} is a target class")
        for i in sorted(os.listdir(base_dir+f)):
            print(f"{i} is an input image path")
            X.append(base_dir+f+'/'+i)
            y.append(f)
print(X)
print(y)
Run Code Online (Sandbox Code Playgroud)

然后您可以使用它train_test_split(X,y, test_size=0.20)来获取您需要的内容,但请记住,您必须使用其他库(如pillowscikit-image或类似库)打开图像。

如果您打算用于pytorch训练神经网络,则可以使用他们的ImageFolder 来创建数据集。