python 调用sklearn 归一化和标准化、训练集验证集随机划分

#Z-Score标准化
from sklearn.preprocessing import StandardScaler

scaler = StandardScaler()
scaler.fit(train_X)
data_1 = scaler.transform(data_1)

#最大最小值归一化
from sklearn.preprocessing import MinMaxScaler

scaler = MinMaxScaler()
data_1 = scaler.transform(data_1)

训练集和测试集划分
train,validation = train_test_split(train_X, train_size = 0.7, random_state = 1)

 

### YOLOv11 数据集转换与划分 对于YOLO系列模型的数据准备流程通常保持相似性,尽管具体实现细节可能有所不同。基于已有的YOLO版本实践[^1],可以推测YOLOv11的数据集处理也会遵循类似的模式。 #### 数据集切分 数据集应当被合理地划分训练集验证集以及测试集三部分。一般推荐的比例为8:1:1或7:2:1。这有助于确保模型能够充分学习特征的同时也具备良好的泛化能力。为了完成这一操作,在Python环境中可利用`train_test_split()`函数来随机分配样本至不同子集中: ```python from sklearn.model_selection import train_test_split # 假设images_paths是一个包含所有图像路径列表的变量 train_val, test = train_test_split(image_paths, test_size=0.1, random_state=42) train, val = train_test_split(train_val, test_size=0.1/(0.9), random_state=42) for phase, subset in zip(['train', 'val', 'test'], [train, val, test]): with open(f'{phase}.txt', 'w') as f: for img_path in subset: f.write(img_path + '\n') ``` 此段代码创建了三个文本文件(`train.txt`, `val.txt`, `test.txt`),其中每行记录了一个图片的位置信息,用于后续加载数据时指定哪些图像是属于哪个阶段使用的。 #### 格式转换 考虑到YOLO算法特有的标签格式需求——即每个对象由类别ID加上边界框坐标(x_center, y_center, width, height),这些数值均需相对于整个图像尺寸进行归一化处理。如果原始标注采用其他形式(比如Pascal VOC中的XML格式)[^2],则需要编写脚本来批量读取并解析源文件,再按照上述标准重写为目标TXT文件保存下来。 假设有一个名为`convert_annotation.py`的工具负责执行这项任务,则其核心逻辑可能是这样的: ```python import xml.etree.ElementTree as ET def convert(size, box): dw = 1./(size[0]) dh = 1./(size[1]) x = (box[0] + box[1])/2.0 - 1 y = (box[2] + box[3])/2.0 - 1 w = box[1] - box[0] h = box[3] - box[2] x = x*dw w = w*dw y = y*dh h = h*dh return (x,y,w,h) def main(): # 这里省略了具体的参数获取过程... tree = ET.parse(in_file) root = tree.getroot() size = root.find('size') w = int(size.find('width').text) h = int(size.find('height').text) out_file = open(out_file_name, 'w') for obj in root.iter('object'): difficult = obj.find('difficult').text cls = obj.find('name').text if cls not in classes or int(difficult)==1: continue cls_id = classes.index(cls) xmlbox = obj.find('bndbox') b = (float(xmlbox.find('xmin').text), float(xmlbox.find('xmax').text), float(xmlbox.find('ymin').text), float(xmlbox.find('ymax').text)) bb = convert((w,h), b) out_file.write(str(cls_id) + " " + " ".join([str(a) for a in bb]) + '\n') if __name__ == '__main__': main() ``` 这段程序遍历给定目录下的每一个`.xml`文件,并将其对应的物体位置信息转化为适合YOLO输入的形式存储于同名但扩展名为`.txt`的新文档内。 #### 执行检测命令 一旦完成了以上准备工作之后,就可以调用YOLO框架自带的推理接口来进行目标识别实验了。例如,通过下面这条指令启动预训练权重文件位于`weights/yolov5s.pt`处的小型网络结构对新采集来的照片实施预测分析工作;同时设置置信度阈值为0.25,输出分辨率为640×640像素大小的结果可视化图形: ```bash !python detect.py --weights yolov5s.pt --img 640 --conf 0.25 --source data/images/ ``` 需要注意的是,实际应用中应替换掉这里的示例路径配置项以匹配个人环境的具体情况。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值