# 使用 Lazypredictor优化KNN 算法识别猫狗项目 **Repository Path**: xv514/Using-Lazypredictor-to-Optimize-KNN-Algorithm-to-Identify-Cat-and-Dog-Projects ## Basic Information - **Project Name**: 使用 Lazypredictor优化KNN 算法识别猫狗项目 - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-11-11 - **Last Updated**: 2025-11-11 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ![输入图片说明](%E5%B1%8F%E5%B9%95%E6%88%AA%E5%9B%BE%202025-11-11%20153938.png) ![输入图片说明](%E5%B1%8F%E5%B9%95%E6%88%AA%E5%9B%BE%202025-11-11%20154013.png) # 猫狗图像分类系统(lazypredict版) ## 项目描述 本项目基于lazypredict工具库,自动对比多种机器学习分类算法在猫狗图像分类任务上的性能,筛选出最优模型并构建 Web 交互界面,实现高效、便捷的猫狗图像识别功能。 ## 功能 本项目实现了以下功能: --支持两种特征提取方式(flat 灰度展平与 vgg 特征提取) --使用lazypredict批量训练多种分类模型并自动评估性能 --自动筛选准确率最高的模型并保存到本地 --提供 Gradio 网页交互界面,支持图片上传和实时分类预测 --显示分类结果及置信度,提升用户体验 ## 依赖 本项目依赖以下库: - numpy - pandas - scikit-learn - gradio - lazypredict - tqdm - pillow - logging - joblib - tensorflow ## 使用 1. 安装依赖库 ```bash pip install numpy pandas scikit-learn lazypredict gradio joblib tensorflow pillow tqdm ``` 2. 模型训练 运行训练脚本自动对比多种模型并保存最优模型: ```bash python train.py ``` 训练过程会自动读取图像数据并提取特征(默认使用 flat 方法) 程序会使用lazypredict批量训练多种分类模型并输出性能指标 训练完成后,最佳模型将保存为 lazy_best_model.pkl,标准化器保存为 lazy_scaler.pkl 首次运行会生成特征缓存文件(X.pkl 和 y.pkl),后续运行将直接加载以提高效率 3. 启动 Web 应用 使用训练好的模型启动交互界面: ```bash python webapp.py ``` - 应用启动后,访问本地地址(默认http://127.0.0.1:7860)即可使用 - 支持拖放或点击上传图片,系统会自动识别并返回分类结果及置信度 ## 项目结构 1.train.py:训练脚本,使用 lazypredict 批量训练模型并保存最佳模型 2.webapp.py:Web 应用脚本,基于 Gradio 部署模型 3.util_1.py:工具函数,包含图像处理和特征提取功能 4.FaissKNeighbors_1.py:Faiss 库实现的 KNN 分类器(备用) 5.lazy_best_model.pkl:训练生成的最佳模型(自动生成) 6.lazy_scaler.pkl:数据标准化器(自动生成) 7.X.pkl/y.pkl:特征缓存文件(自动生成) ## 训练过程说明 训练脚本会执行以下步骤: 1.加载并预处理图像数据(支持 flat 或 vgg 特征提取) 2.分割训练集和测试集(8:2 比例,分层抽样) 3.对数据进行标准化处理 4.使用 lazypredict 批量训练多种分类模型 5.评估所有模型性能(准确率、平衡准确率、ROC AUC、F1 分数、训练时间) 6.筛选准确率最高的模型并重新训练 7.保存最佳模型和标准化器 ## 注意 - 本项目使用 Python 3.8 及以上版本开发测试 - 训练前请确保训练数据存放于指定目录(默认__MACOSX/data/train),且文件命名符合 "cat.xxx" 或 "dog.xxx" 格式 - 特征提取方法可在 train.py 的 CONFIG 中修改("flat" 或 "vgg") - Gradio 可能存在版本兼容性问题,建议使用 3.x 版本 ## 个人信息 - 学号: 202352320224 - 年级: 2023 - 专业: 智能科学与技术 - 班级: 2班