``` import os import shutil from sklearn.model_selection import train_test_split import pandas as pd # 定义源目录路径 source_folder = 'C:/Users\Lenovo\Desktop\crcw不同端12k在0负载下\风扇端' subfolders = ["内圈故障", "球故障"] # 创建目标文件夹结构 target_folders = { 'train': '训练集', 'val': '验证集', 'test': '测试集' } os.makedirs('划分后的数据', exist_ok=True) for key, folder in target_folders.items(): for subfolder in subfolders: path = os.path.join('划分后的数据', folder, subfolder) os.makedirs(path, exist_ok=True) # 遍历每个子文件夹并读取CSV文件 all_data = [] for subfolder in subfolders: folder_path = os.path.join(source_folder, subfolder) files = [f for f in os.listdir(folder_path) if f.endswith('.csv')] # 将所有数据加载到列表中 for file in files: data = pd.read_csv(os.path.join(folder_path, file)) all_data.append((data, subfolder)) # 划分数据集 train_val, test = train_test_split(all_data, test_size=0.2, random_state=42) train, val = train_test_split(train_val, test_size=0.25, random_state=42) # 即最终比例为6:2:2 # 移动文件至对应的目标文件夹 def move_files(data_list, target_dir): for data, label in data_list: filename = f"{label}_{hash(str(data.iloc[0].values))}.csv" # 确保唯一性 save_path = os.path.join(target_folders[target_dir], label, filename) data.to_csv(save_path, index=False) move_files(train, 'train') move_files(val, 'val') move_files(test, 'test') print("数据集已成功划分为训练集、验证集和测试集!")```这段代码中在哪定义目标文件夹呢
时间: 2025-03-28 13:14:55 浏览: 43
在这段代码中,**目标文件夹的定义位置**可以明确地找到。以下是详细的解析:
---
### **关键点分析**
1. **目标文件夹结构的定义**
目标文件夹通过 `target_folders` 字典变量进行了定义:
```python
target_folders = {
'train': '训练集',
'val': '验证集',
'test': '测试集'
}
```
这里将 `'train'`, `'val'`, 和 `'test'` 分别映射为中文名称 `'训练集'`, `'验证集'`, 和 `'测试集'`。
2. **创建目标文件夹的实际操作**
文件夹的具体创建是在以下循环中完成的:
```python
os.makedirs('划分后的数据', exist_ok=True)
for key, folder in target_folders.items():
for subfolder in subfolders:
path = os.path.join('划分后的数据', folder, subfolder)
os.makedirs(path, exist_ok=True)
```
- 首先,主目录 `'划分后的数据'` 被创建。
- 接着,遍历了 `target_folders` 中的键值对 (`key`: `'train'`, `'val'`, `'test'`) 及其对应的中文名 (`folder`: `'训练集'`, `'验证集'`, `'测试集'`)。
- 再次嵌套遍历 `subfolders`(即 `"内圈故障"` 和 `"球故障"`),逐层构建完整路径,并调用 `os.makedirs()` 创建各级子文件夹。
因此,目标文件夹的层级结构最终会是这样的形式:
```
划分后的数据/
├── 训练集/
│ ├── 内圈故障/
│ └── 球故障/
├── 验证集/
│ ├── 内圈故障/
│ └── 球故障/
└── 测试集/
├── 内圈故障/
└── 球故障/
```
---
### **总结**
目标文件夹的定义位于两个地方:
1. 数据字典 `target_folders` 的声明部分,明确了三个集合(训练集、验证集、测试集)及其对应的中文名称;
2. 使用双重循环结合 `os.makedirs()` 实现具体文件夹的创建逻辑。
如果需要修改目标文件夹的位置或命名规则,可以直接调整 `target_folders` 或者更改 `'划分后的数据'` 所指向的根目录路径。
---
###
阅读全文
相关推荐













