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

时间:2019-01-23 18:08:42

标签: python pandas dataset

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

Dataset/
   |
   |
   -----Pothole/
   |         |
   |         ------ umm001.jpg
   |         |
   |         ------ abd.jpg
   |         |
   |         ------ 
   |         |
   |
   |
   ----Road/
         |
         ------road005.jpg
         |
         ------ummm.jpg
         |
         ------
         |

我想将此数据集拆分为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()

或者,

(X_train, y_train), (X_test, y_test) = train_test_split(X,y, test_size=0.20)

我该怎么做?

2 个答案:

答案 0 :(得分:0)

您可以使用X模块构建yos数组:

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)

然后,您可以使用train_test_split(X,y, test_size=0.20)来获取所需的内容,但是请记住,您将不得不使用pillowscikit-image之类的其他库或类似库来打开图像。

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

答案 1 :(得分:-1)

您始终可以使用scikit-learn:https://scikit-learn.org/stable/modules/generated/sklearn.model_selection.train_test_split.html

别忘了导入

from sklearn.model_selection import train_test_split