Machine learning Scikit learn中是否有用于将子类数据集拆分为文件夹中的训练集/测试集的库或工具

Machine learning Scikit learn中是否有用于将子类数据集拆分为文件夹中的训练集/测试集的库或工具,machine-learning,scikit-learn,deep-learning,dataset,artificial-intelligence,Machine Learning,Scikit Learn,Deep Learning,Dataset,Artificial Intelligence,我有一个不平衡的8个类数据集,每个类中有4个子类,我想将其拆分为测试/训练集的文件夹,数据集如下所示: Dataset |------ Class A | |---------Sub-Class 1 | |---------Sub-Class 2 | |---------Sub-Class 3 | |---------Sub-Class 4 | |------ Class B | |---------Sub-Class 1 | |

我有一个不平衡的8个类数据集,每个类中有4个子类,我想将其拆分为测试/训练集的文件夹,数据集如下所示:

Dataset
   |------ Class A
   |  |---------Sub-Class 1
   |  |---------Sub-Class 2
   |  |---------Sub-Class 3
   |  |---------Sub-Class 4
   |
   |------ Class B
   |  |---------Sub-Class 1
   |  |---------Sub-Class 2
   |  |---------Sub-Class 3
   |  |---------Sub-Class 4
   |
   |------ Class C
   |  |---------Sub-Class 1
   |  |---------Sub-Class 2
   |  |---------Sub-Class 3
   |  |---------Sub-Class 4
   |
   |------ Class D
   |  |---------Sub-Class 1
   |  |---------Sub-Class 2
   |  |---------Sub-Class 3
   |  |---------Sub-Class 4
   |
   |------ Class E
   |  |---------Sub-Class 1
   |  |---------Sub-Class 2
   |  |---------Sub-Class 3
   |  |---------Sub-Class 4
   |
   |------ Class F
   |  |---------Sub-Class 1
   |  |---------Sub-Class 2
   |  |---------Sub-Class 3
   |  |---------Sub-Class 4
   |
   |------ Class G
   |  |---------Sub-Class 1
   |  |---------Sub-Class 2
   |  |---------Sub-Class 3
   |  |---------Sub-Class 4
   |
   |------ Class K
   |  |---------Sub-Class 1
   |  |---------Sub-Class 2
   |  |---------Sub-Class 3
   |  |---------Sub-Class 4
因此,我正在寻找一种高效、专业的工具,可以帮助我将数据集拆分为训练集/测试集文件夹。

我建议使用sklearn库中的函数。它具有参数-分层。对于此参数,可以从数据集中为分层指定几列

例如:

X_train, X_test, y_train, y_test = train_test_split(Dataset, 
                                                    Dataset['Class'],
                                                    test_size=0.1, 
                                                    stratify=Dataset[['Sub-Class']])

您可以使用sklearn.model\u选项中的train\u test\u split()函数。下面是一个将数据分为20%测试和80%训练的示例


X_-train,X_-test,y_-train,y_-test=train_-test\u split(X,y,test\u size=0.2)

您可以使用拆分文件夹库将文件夹拆分为train、test和validation文件夹,或仅拆分为train和validation文件夹。下面给出了链接,您可以查看它


我不希望它们作为数组,因为我使用的是.flow\u from\u directory keras函数,而且我没有太多的Ram来使用该方法。您可以尝试添加一个步骤:*构建数据帧['Class','Sub Class','real\u path']*使用
train\u test\u split
*将文件复制到train或test目录中,我会尝试一下,我不希望它们作为数组,因为我使用的是.flow\u from\u directory keras函数,我没有太多的内存来使用这种方法。请不要只是发布一个链接,而是在你的答案中包含解决方案的基本部分。