# OPTIMAL_KNN_MNIST_QUESTION **Repository Path**: hydrogen-elements/optimal_knn_mnist_question ## Basic Information - **Project Name**: OPTIMAL_KNN_MNIST_QUESTION - **Description**: 本项目使用gradio应用在 minist 上训练的最有 KNN 模型就行手写数字识别。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 309 - **Created**: 2025-09-29 - **Last Updated**: 2025-10-12 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 最佳 KNN 手写数字识别(含 Pinecone 云端版) ![model training process](model_training.jpeg) ![webapp screen shot](screen_shot.jpeg) ## 项目简介 本项目基于 sklearn 的 digits(8x8) 数据集,提供两种推理方式: - 本地模型:在本地选择最优 K 并保存模型,WebApp 直接加载本地模型推理; - Pinecone 云端:将数据向量化后上传 Pinecone,每次预测在 Pinecone 上做近邻搜索(k=11)。 文件清单: - `optimal_knn.py`:通过 5 折交叉验证选择最优 K,保存 `best_knn_model.pkl` 与 `accuracy_plot.pdf`。 - `optimal_knn_webapp.py`:基于本地模型的 Gradio Web 应用。 - `pinecone_example.py`:Pinecone 入门示例,创建索引、上传 digits 数据并查询前 10 邻居。 - `pinecone_train.py`:80% 数据上传、20% 测试,k=11,带 tqdm 进度与日期日志。 - `optimal_knn_webapp_pinecone.py`:每次推理都调用 Pinecone 查询的 Web 应用。 ## 安装 建议使用 Python 3.10+。Windows PowerShell 示例: ```powershell # 1) 创建并激活虚拟环境 python -m venv .venv .\.venv\Scripts\Activate.ps1 # 2) 安装依赖 pip install -U pip pip install -r requirements.txt # 可选:配置国内镜像 # pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple ``` Pinecone 脚本需要 API Key,请设置环境变量: ```powershell $env:PINECONE_API_KEY = "你的APIKey" # 可选:自定义 $env:PINECONE_INDEX = "mnist-index" $env:PINECONE_REGION = "us-east-1" $env:PINECONE_CLOUD = "aws" ``` ## 使用本地 KNN 模型 ```powershell python optimal_knn.py python optimal_knn_webapp.py ``` ## Pinecone 示例与训练 首次运行若索引不存在,将自动创建并上传数据(稍慢): ```powershell python pinecone_example.py ``` 训练并评估(80/20,k=11): ```powershell python pinecone_train.py ``` ## Web 应用 - 本地模型版: ```powershell python optimal_knn_webapp.py ``` - Pinecone 在线推理版: ```powershell python optimal_knn_webapp_pinecone.py ``` ## 备注 - 首次 Pinecone 查询可能较慢(冷启动/网络); - 如果 Pinecone 返回为空,请先运行 `pinecone_example.py` 或 `pinecone_train.py` 上传数据; - Windows 下 `accuracy_plot.pdf` 若被占用,脚本会自动换名保存。