当前位置: 首页 > article >正文

KNN实战-图像识别

数据说明

是在循环0-9的数字一直循环500次所得到的数据,然后以手写照片的形式存在在这里插入图片描述

识别的步骤

  • 加载数据
  • 构建目标值
  • 构建模型
  • 参数调优
  • 可视化展示

加载数据

import numpy as np
import matplotlib.pyplot as plt
# 记载数据
data = np.load('./digit.npy')
data

构建目标值

# 构建基础的目标值
y = list(np.arange(0,10))*500
# 对生成的目标值进行排序,与图片的目标值进行对应
y.sort()
# 为了在拆分数据的时候可以正常拆分
y = np.array(y)

数据处理和数据拆分

数据处理

X = data.reshape(5000,-1)
X.shape # 784:是图片的像素值 ,也就是图像的特征

数据拆分

from sklearn.model_selection import train_test_split
X_tarin,X_test,y_train,y_test = train_test_split(X,y,# x,y的数据
test_size=0.05  # 验证集的占总数据的比重
,random_state=1024 # 随机数的种子)
display(X_tarin.shape,X_test.shape,y_train.shape,y_test.shape)

创建模型

from sklearn.neighbors import KNeighborsClassifier
# 创建模型
model = KNeighborsClassifier(n_neighbors=5)
model.fit(X_tarin,y_train)
# 数据分数
model.score(X_test,y_test)

训练数据的结果的分数
在这里插入图片描述

参数调优

%%time
from sklearn.model_selection import GridSearchCV
prams = dict(n_neighbors = [5,7,9,12,15,17,21,23,30],
             weights=['uniform','distance'],
             p=[1,2])
estimator = KNeighborsClassifier()
gCV = GridSearchCV(estimator,prams,cv=5,scoring='accuracy')
gCV.fit(X_tarin,y_train)

在这里插入图片描述

%%time:获取当前程序的运行时间

获取最佳参数

gCV.best_params_

获取平均分数

gCV.best_score_

获取最佳模型

gCV.best_estimator_

数据的验证与预测

best_model = gCV.best_estimator_
y_predict = gCV.predict(X_test)
print('测试值:',y_predict)
print('真实值:',y_test)
best_model.score(X_test,y_test)

得到的结果(在得分上看模型的质量还是有所提升的)
在这里插入图片描述

可视化

plt.figure(figsize=(5*2,10*3))
for i in range(50):
    plt.subplot(10,5,i+1)
    plt.imshow(X_test[i].reshape(28,28))
    true = y_test[i]
    predict = y_predict[i]
    plt.title(f'true:{true}\n'+f'predict:{predict}')

在这里插入图片描述

坚持学习,整理复盘
在这里插入图片描述


http://www.kler.cn/a/154703.html

相关文章:

  • 从零开始学习 sg200x 多核开发之 uboot 网络功能使能
  • __VUE_PROD_HYDRATION_MISMATCH_DETAILS__ is not explicitly defined
  • SpringBoot(5)-SpringSecurity
  • CDH安装与配置及相关大数据组件实践
  • 信奥学习规划(CSP-J/S)
  • vue 获取摄像头拍照,并旋转、裁剪生成新的图片
  • 禁止谷歌浏览器自动更新
  • XIAO ESP32S3之SenseCraft 模型助手部署
  • C++标准模板(STL)- 类型支持 (杂项变换,定义适于用作给定大小的类型的未初始化存储的类型,std::aligned_storage)
  • 西南科技大学模拟电子技术实验五(集成运算放大器的应用设计)预习报告
  • 计算机网络扫盲(1)——因特网
  • 树莓派搭建开发环境
  • 业余做UE开发顾问
  • Screenshot To Code
  • 安卓底部导航栏BottomNavigationView
  • 云原生高级--shell自动化脚本备份
  • 固定Microsoft Edge浏览器的位置设置,避免自动回调至中国
  • Dart编程基础 - 一种新的编程语言
  • vmware系列:【VMware篇】8-vCenter的安装与配置(一)以IP地址安装
  • Eaxyx 让圆球跟随鼠标移动
  • 《功能磁共振多变量模式分析中空间分辨率对解码精度的影响》论文阅读
  • postman打开白屏
  • 目标检测YOLO系列从入门到精通技术详解100篇-【图像处理】图像预处理方法
  • 怎么通过邻接矩阵求图的通路总数和回路总数?
  • SpringSecurity工作原理
  • Spring MVC常用的注解, Controller注解的作用,RequestMapping注解的作用 @ResponseBody注解的作用