# 使用集成学习优化KNN 算法识别猫狗 **Repository Path**: xv514/ensemble-learning ## Basic Information - **Project Name**: 使用集成学习优化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-04 - **Last Updated**: 2025-11-04 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 使用集成学习优化“KNN 算法识别猫狗” ## 项目描述 本项目基于集成学习算法和 Faiss 库,实现了一个高精度的猫狗图像分类系统。系统通过多种机器学习模型的集成策略,提升了传统 KNN 算法的分类性能,并提供了便捷的 Web 交互界面供用户使用。 ## 功能 本项目实现了以下功能: --用集成学习算法(包括投票机制、Bagging、Boosting、Stacking 等)实现猫狗分类 --仅使用 flat 特征提取方法和 CPU 运行模式,简化操作流程 --自动训练并保存准确率最高的集成模型 --提供 Gradio 网页应用,支持图片上传和实时分类 ## 依赖 本项目依赖以下库: - numpy - faiss - sklearn - gradio - logging - tqdm - cv2 - os - PIL - joblib - tensorflow ## 使用 1. 安装依赖库 ```bash pip install numpy faiss-cpu scikit-learn gradio logging tqdm opencv-python pillow joblib tensorflow ``` 2. 模型训练 运行训练脚本生成并保存最佳集成模型: ```bash python train_ensemble.py ``` 训练过程会自动使用 flat 特征提取方法和 CPU 模式 程序会训练多种基础模型和集成模型,并输出各模型的性能指标 训练完成后,最佳模型将保存为best_model.pkl,标准化器保存为scaler.pkl 训练过程约需 2 小时,请在本地电脑完成 3. 启动 Web 应用 使用训练好的模型启动交互界面: ```bash python ensumble_webapp.py ``` - 应用启动后,访问本地地址(默认http://127.0.0.1:7860)即可使用 - 支持拖放或点击上传图片,系统会自动识别并返回分类结果及置信度 ## 项目结构 1.train_ensemble.py:训练脚本,用于训练多种模型并保存最佳集成模型 2.ensumble_webapp.py:Web 应用脚本,基于 Gradio 部署模型 3.util.py:工具函数,包含图像处理和特征提取功能 4.FaissKNeighbors.py:Faiss 库实现的 KNN 分类器 5.best_model.pkl:训练生成的最佳模型(自动生成) 6.scaler.pkl:数据标准化器(自动生成) ## 训练过程说明 训练脚本会执行以下步骤: 1.加载并预处理图像数据(使用 flat 特征提取) 2.分割训练集和测试集(8:2 比例) 3.训练多种基础模型(逻辑回归、随机森林、SVM 等) 4.训练集成模型(投票分类器、Bagging、Boosting 等) 5.评估所有模型性能(准确率、训练时间、预测时间) 6.保存性能最佳的模型和标准化器 ## 注意 - 本项目使用 Python 3.8 及以上版本开发测试 - 训练前请确保训练数据存放于./date2/train2目录,且文件命名符合 "cat.xxx" 或 "dog.xxx" 格式 - 首次运行会生成特征缓存文件(X.pkl 和 y.pkl),后续运行将直接加载以提高效率 - Gradio 可能存在版本兼容性问题,建议使用 3.x 版本 ## 个人信息 - 学号: 202352320224 - 年级: 2023 - 专业: 智能科学与技术 - 班级: 2班