# LazyKNN_CatDogRecog **Repository Path**: duan-qi-rui/lazy-knn_-cat-dog-recog ## Basic Information - **Project Name**: LazyKNN_CatDogRecog - **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-05 - **Last Updated**: 2025-11-05 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 机器学习猫狗分类项目 本项目实现了基于多种机器学习算法的猫狗图像识别系统,包含完整的模型训练、评估和Web应用部署功能。 --- ## 简介 这是一个综合性的图像分类实战项目,通过训练和对比多种主流机器学习分类器,自动筛选出最佳性能模型,并提供基于Gradio的Web交互界面实现实时推理。 ### 核心功能 - 集成20余种经典分类算法 - 全自动模型训练与评估流程 - 支持多指标性能对比分析 - 提供直观的Web推理界面 - 自动保存最优模型 --- ## 项目文件说明 ``` 工作目录/ ├── train.py # 训练主程序 ├── webapp.py # Web应用界面 ├── util.py # 特征提取工具 ├── requirements.txt # 环境依赖 ├── cat_dog_data/data/train/ # 训练数据 ├── best_model.pkl # 最优模型文件 ├── model_metadata.pkl # 模型配置信息 └── training_results.csv # 性能评估报告 ``` --- ## 快速开始指南 ### Step 1: 环境准备 使用pip安装所需依赖包: ```bash pip install -r requirements.txt ``` **核心依赖库:** - NumPy, Pandas: 数值计算与数据分析 - scikit-learn: 机器学习算法库 - Gradio: Web界面构建 - OpenCV, Pillow: 图像处理 - Joblib: 模型持久化 **可选依赖库:** - XGBoost: 梯度提升算法 - LightGBM: 轻量级梯度提升框架 注:可选库缺失不影响主体功能运行 ### Step 2: 执行模型训练 运行训练程序: ```bash python train.py ``` **程序执行流程:** 1. 从数据目录读取猫狗图片 2. 提取并预处理图像特征 3. 批量训练所有分类算法 4. 计算性能评估指标 5. 生成对比分析报告 6. 自动保存最优模型 **生成文件:** - `best_model.pkl`: 最高准确率模型 - `model_metadata.pkl`: 模型配置与性能数据 - `training_results.csv`: 详细评估报告 ### Step 3: 启动推理服务 执行Web应用: ```bash python webapp.py ``` 访问地址:http://localhost:7860 **应用功能:** - 图片上传识别 - 置信度可视化 - 模型性能展示 - 示例样本测试 **测试样例展示:**
猫咪样本 狗狗样本
--- ## 技术方案 ### 图像特征提取 **处理流程:** 1. 图像尺寸标准化(32×32) 2. 色彩空间转换(灰度化) 3. 向量展平(1024维) 4. L2归一化 ### 数据集配置 | 项目 | 配置 | |------|------| | 训练比例 | 75% | | 测试比例 | 25% | | 随机种子 | 2023 | ### 评估指标体系 模型性能通过以下5项指标综合评估: - **Accuracy**: 分类准确率 - **Balanced Accuracy**: 类别平衡准确率 - **ROC AUC**: 接收者操作特征曲线面积 - **F1 Score**: 精确率与召回率调和均值 - **Time Taken**: 模型训练耗时 --- ## 支持的算法 本项目实现了多个类别的机器学习算法: **集成方法** RandomForest | ExtraTrees | Bagging | AdaBoost | XGBoost | LightGBM **支持向量机** SVC | NuSVC | LinearSVC **线性分类器** LogisticRegression | Ridge | SGD | Perceptron | PassiveAggressive **概率模型** GaussianNB | BernoulliNB **判别分析** LinearDiscriminantAnalysis | QuadraticDiscriminantAnalysis **基于距离** KNeighbors | NearestCentroid **树模型** DecisionTree **半监督** LabelPropagation | LabelSpreading **其他** CalibratedClassifierCV | DummyClassifier --- ## 技术栈 | 类别 | 技术 | |------|------| | 编程语言 | Python 3.x | | ML框架 | scikit-learn | | Web框架 | Gradio | | 数据处理 | NumPy, Pandas | | 图像处理 | OpenCV, PIL | | 增强算法 | XGBoost, LightGBM (可选) | --- ## 注意事项 1. 图片文件命名必须符合规范(以cat.或dog.开头) 2. 部分算法在大数据集上训练较慢属正常现象 3. 建议使用scikit-learn 1.0及以上版本 4. 首次运行需从原始图片提取特征,耗时较长 5. 确保训练数据目录包含足够样本 --- ## 个人信息 **学号:** 202352320120 **年级:** 2023级 **专业:** 智能科学与技术 **班级:** 1班