# OPTIMAL_KNN_MNIST_QUESTION **Repository Path**: there-is-a-cake/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**: 248 - **Created**: 2024-09-03 - **Last Updated**: 2025-07-01 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 最佳 KNN 手写数字识别 ![model training process](model_training.jpeg) ![webapp screen shot](screen_shot.jpeg) ## 项目简介 这个项目包含三个主要的Python脚本:`optimal_knn.py` , `optimal_knn_webapp.py`和'predict_digit_webapp.py'。 `optimal_knn.py` 脚本用于找出最优的K值,以便在K近邻分类器中使用。它首先加载手写数字数据集,然后尝试不同的K值,找出能够使模型准确率最高的K值。最后,它将最优的KNN模型保存到一个pickle文件中。 `optimal_knn_webapp.py` 脚本使用[Gradio](https://www.gradio.app/)库创建一个web应用,该应用可以接收用户的手写数字图像输入,然后使用之前保存的最优KNN模型进行预测,最后返回预测的数字。Gradio库使得创建这个用户友好的界面变得简单快捷。 'optimal_knn_webapp_pinecone.py' 脚本使用Gradio库创建了一个用户友好的web应用,该应用允许用户在画布上手绘数字,并通过查询Pinecone向量数据库来预测所绘制的数字。此应用程序利用了OpenCV进行图像预处理,包括转换为灰度图、调整大小和归一化等步骤,以确保输入数据与训练模型时使用的MNIST数据集格式一致。Pinecone被用来存储和检索相似的向量,从而实现对用户绘制数字的高效识别。 ## 安装 以下是安装步骤: 1. 克隆这个仓库到你的本地机器上。 2. 安装必要的Python库,包括sklearn,matplotlib,pickle,tqdm,gradio,numpy,PIL和cv2。 3. 填充`optimal_knn.py`中所有`#TODO`部分内容,运行脚本,生成最优的KNN模型。 4. 填充`optimal_knn_webapp.py`部中所有`#TODO`部分内容,运行脚本,启动web应用。 ## 使用 以下是如何使用我们的项目: 1. 在你的浏览器中打开web应用。 2. 在sketchpad中绘制一个数字。 3. 点击“提交”,你将看到模型预测的数字。