# zyx_pinecone_knn_mnist_app **Repository Path**: marigold125/zyx_pinecone_knn_mnist_app ## Basic Information - **Project Name**: zyx_pinecone_knn_mnist_app - **Description**: 本项目使用gradio应用在 minist 上训练的最有 KNN 模型就行手写数字识别。 - **Primary Language**: Unknown - **License**: WTFPL - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 385 - **Created**: 2025-11-08 - **Last Updated**: 2025-11-09 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 基于Pinecone的KNN手写数字识别APP 本项目基于**Pinecone向量数据库**和**KNN(K近邻)算法**,实现手写数字(0-9)的识别功能。通过将手写数字的特征向量存储在Pinecone云端,实现高效的相似性查询,从而完成数字识别。 ## 项目文件说明 ### 1. `pinecone_example.py` - 功能:Pinecone服务注册演示与基础查询示例。 - 作用:帮助快速验证Pinecone服务的可用性,包含简单的向量查询逻辑。 ### 2. `pinecone_train.py` - 功能:Pinecone索引创建、手写数字数据(`digits`数据集)上传与准确率测试。 - 细节: - 将80%的`digits`数据上传至Pinecone索引,构建KNN的“特征库”; - 用20%的测试数据验证`k=11`时的识别准确率; - 包含进度条展示数据上传和测试过程,以及带日期的日志输出。 ### 3. `optimal_knn_webapp_pinecone.py` - 功能:Gradio Web界面,支持手绘数字并调用Pinecone进行识别。 - 交互:在画布上手写数字(0-9),点击“提交”即可获取Pinecone的KNN识别结果。 ## 使用步骤 ### 1. 安装依赖 ```bash pip install gradio pinecone scikit-learn matplotlib tqdm ``` ### 2. 替换Pinecone API密钥 在代码中找到以下位置,替换为你自己的Pinecone API密钥: ```python api_key = "你的Pinecone API密钥" # 替换为实际密钥 ``` ### 3. 运行训练脚本(创建索引并测试准确率) ```bash python pinecone_train.py ``` ### 4. 启动Web界面 ```bash python optimal_knn_webapp_pinecone.py ``` 启动后访问终端输出的网址(如`http://localhost:7860`),即可在画布上手写数字并测试识别效果。 ## 运行效果展示 ### 1. 训练脚本运行结果(`pinecone_train.py`) ![Pinecone训练数据上传与准确率测试](images/pinecone_train_result.jpg) ### 2. Web界面启动输出(`optimal_knn_webapp_pinecone.py`) ![Gradio Web界面启动地址](images/webapp_launch.jpg) ### 3. 基础示例运行结果(`pinecone_example.py`) ![Pinecone单条数据检索测试](images/pinecone_example_result.jpg) ### 4. Web界面识别示例 ![手绘数字7的识别结果](images/web_demo_recognize_7.jpg) ## 注意事项 - 确保网络连接正常(Pinecone是云端服务,需联网使用); - 首次运行`pinecone_train.py`时,索引创建和数据上传可能耗时稍久,后续使用会更高效; - 若需修改K值(如`k=5`或`k=15`),可在`pinecone_train.py`和`optimal_knn_webapp_pinecone.py`中同步调整`top_k`参数。 该项目基于经典KNN算法,结合Pinecone的云端向量存储能力,实现了手写数字的高效识别。如需进一步优化,可尝试调整Pinecone索引的距离度量(如`cosine`)或K值,以平衡速度与准确率。 ## 个人信息 - 学号: 202452320129 - 年级: 2024 - 专业: 智能科学与技术 - 班级: 1 班