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

wordpress搭建教程关键词seo排名优化如何

wordpress搭建教程,关键词seo排名优化如何,做网站靠广告能赚钱吗,做介绍的英文网站利用knn算法实现手写数字分类 1.作者介绍2.KNN算法2.1KNN(K-Nearest Neighbors)算法核心思想2.2KNN算法的工作流程2.3优缺点2.4 KNN算法图示介绍 3.实验过程3.1安装所需库3.2 MNIST数据集3.3 导入手写数字图像进行分类3.4 完整代码3.5 实验结果 1.作者介…

利用knn算法实现手写数字分类

  • 1.作者介绍
  • 2.KNN算法
    • 2.1KNN(K-Nearest Neighbors)算法核心思想
    • 2.2KNN算法的工作流程
    • 2.3优缺点
    • 2.4 KNN算法图示介绍
  • 3.实验过程
    • 3.1安装所需库
    • 3.2 MNIST数据集
    • 3.3 导入手写数字图像进行分类
    • 3.4 完整代码
    • 3.5 实验结果

1.作者介绍

王鹏飞,男,西安工程大学电子信息学院,2024级研究生
研究方向:机器视觉与人工智能
电子邮件:2018659934@QQ.com

王海博, 男 , 西安工程大学电子信息学院, 2024级研究生, 张宏伟人工智能课题组
研究方向:模式识别与人工智能
电子邮件:1137460680@qq.com

2.KNN算法

2.1KNN(K-Nearest Neighbors)算法核心思想

将训练数据保存下来,对于一个新的数据点,通过查看其在特征空间中最近的K个邻居来预测其类别或值。针对分类任务:如果K个邻居中多数属于某个类别,那么新数据点也被归为该类别。

2.2KNN算法的工作流程

(1) 数据准备
特征提取:将数据集中的每个样本表示为特征向量。
数据标准化:由于KNN依赖距离计算,因此需要对特征进行标准化(如归一化或Z分数标准化),以消除不同特征量纲的影响。

(2) 距离计算
对于一个新的数据点,计算它与数据集中每个点之间的距离。常用的距离度量方式包括:欧氏距离、曼哈顿距离和明可夫斯基距离。

(3) 确定最近邻
根据计算出的距离,找出与新数据点距离最近的K个点,这K个点称为“最近邻”。
K是一个超参数,需要根据具体问题选择合适的值。K值过小可能导致过拟合,K值过大可能导致模型过于平滑。

(4) 进行预测
分类任务:统计K个最近邻中每个类别的出现频率,选择出现次数最多的类别作为新数据点的预测类别。

2.3优缺点

(1) 优点
简单易实现:原理直观,实现代码简单。
无需训练:KNN不需要像其他算法那样进行复杂的训练过程,只需在预测时计算距离。
对复杂数据集表现良好:可以很好地处理多类别问题和非线性数据。
(2) 缺点
计算效率低:每次预测都需要计算新数据点与所有训练数据点之间的距离,计算量大。
存储需求高:需要存储整个训练数据集。
对K值和距离度量敏感:K值的选择和距离度量方式对模型性能影响较大。

2.4 KNN算法图示介绍

在这里插入图片描述
见上图所示,五角星为新输入的数据,原训练数据有Class A和Class B两类,对于新输入的数据,根据特征向量计算新输入数据点与训练集数据点之间的距离,根据所选K值确定出,新数据最邻近K个点,图示第一次k值选取为3时,其中Class B类占2/3,所以新数据将被分类为Class B类。
当k值选取为6时,见上图所示,Class A类占4/6,所以此时对于新数据点将被归为Class A类。由此可见K值的选择对于分类的结果存在一定的影响,因此k值的选择对于结果有重要的作用。

3.实验过程

3.1安装所需库

import numpy as np
from sklearn.datasets import fetch_openml
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import accuracy_score, classification_report
import cv2
from PIL import Image
import matplotlib.pyplot as plt

在编写代码前需要安装上述的库和所需的函数。

3.2 MNIST数据集

MNIST数据集来自美国国家标准与技术研究所。训练集由来自250个不同人手写的数字构成,测试集也是同样的手写数字数据,保证了测试集和训练集的作者集不相交。MNIST数据集一共有7万张图片,其中6万张是训练集,1万张是测试集。每张图片是28 × 28像素 的0 − 9的手写数字图片组成。每个图片是黑底白字的灰度图像。MNIST数据集可以导入fetch_openml函数从OpenML平台加载数据集。

3.3 导入手写数字图像进行分类

# 导入自定义图像并进行预测
def preprocess_image(image_path):image = cv2.imread(image_path, cv2.IMREAD_GRAYSCALE)image = cv2.resize(image, (28, 28))image = cv2.bitwise_not(image)image = image.reshape(1, -1)image = scaler.transform(image)return image
def predict_image(image_path):image = preprocess_image(image_path)prediction = knn.predict(image)return prediction[0]
print("Testing custom image...")
image_path = "d:/wenjian/1.jpg"  #更改为自己的路径
prediction = predict_image(image_path)
print(f"Predicted digit: {prediction}")
# 显示图像
image = cv2.imread(image_path, cv2.IMREAD_GRAYSCALE)
image = cv2.resize(image, (28, 28))
image = cv2.bitwise_not(image)
plt.imshow(image, cmap="gray")
plt.title(f"Predicted Digit: {prediction}")
plt.show()

导入一张白底黑字的手写数字图像,并对图像进行预处理使得格式和灰度值与其训练集相同,本次实验导入的是白底黑字的手写数字图像,因为距离计算是依据灰度图像的灰度值进行计算,训练集的图像是黑底白字的灰度图像,因此需要对灰度值进行反转,否则会造成预测误差较大。导入图像路径需更改为自己图像路径。

3.4 完整代码

import numpy as np
from sklearn.datasets import fetch_openml
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import accuracy_score, classification_report
import cv2
from PIL import Image
import matplotlib.pyplot as plt# 加载MNIST数据集
print("Loading MNIST dataset...")
mnist = fetch_openml('mnist_784', version=1)
X, y = mnist["data"], mnist["target"]
y = y.astype(np.uint8)
# 数据预处理
print("Preprocessing data...")
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
scaler = StandardScaler()
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)
# 训练KNN模型
print("Training KNN model...")
knn = KNeighborsClassifier(n_neighbors=5)
knn.fit(X_train, y_train)
# 评估模型
print("Evaluating model...")
y_pred = knn.predict(X_test)
accuracy = accuracy_score(y_test, y_pred)
print(f"Accuracy: {accuracy:.4f}")
print(classification_report(y_test, y_pred))
# 导入自定义图像并进行预测
def preprocess_image(image_path):image = cv2.imread(image_path, cv2.IMREAD_GRAYSCALE)image = cv2.resize(image, (28, 28))image = cv2.bitwise_not(image)image = image.reshape(1, -1)image = scaler.transform(image)return image
def predict_image(image_path):image = preprocess_image(image_path)prediction = knn.predict(image)return prediction[0]
print("Testing custom image...")
image_path = "d:/wenjian/1.jpg"  #更改为自己的路径
prediction = predict_image(image_path)
print(f"Predicted digit: {prediction}")
# 显示图像
image = cv2.imread(image_path, cv2.IMREAD_GRAYSCALE)
image = cv2.resize(image, (28, 28))
image = cv2.bitwise_not(image)
plt.imshow(image, cmap="gray")
plt.title(f"Predicted Digit: {prediction}")
plt.show()

3.5 实验结果

在这里插入图片描述

http://www.dtcms.com/wzjs/250070.html

相关文章:

  • 不懂技术与产品怎样做网站教育培训机构管理系统
  • 网站建设服务费怎么写分录谷歌广告投放步骤
  • 网页与网站设计什么是抖动磁力搜索
  • 做电影网站的服务器需要多大app推广拉新
  • 备案期间怎么做网站简单的html网页制作
  • 内蒙古 网站建设seo综合查询是什么
  • 泉州做网站排名网络游戏推广员的真实经历
  • 独立网店系统哪个好seo引擎搜索入口
  • 如果给公司网站做网络广告hao123网址之家官网
  • 企业网站的类型有哪些企业管理培训课程报名
  • 垂直网站建设方案书免费建站的平台
  • 淮安做微信网站西安网站公司推广
  • 中国疫情最新消息今天站群优化公司
  • 中国城乡住房和建设部网站首页百度一下马上知道
  • 做的网站提示磁盘空间不足吉林刷关键词排名优化软件
  • 足球比赛直播中国队seo网站建设
  • 免费代理服务器proxy河南网站优化
  • 网站名称填写什么软文营销的本质
  • 长沙有什么做试卷的网站百度知道入口
  • 深圳讯美网站建设怎么创建一个网页
  • 网站怎么做内部链接免费seo推广软件
  • 介绍产品网站制作策划营销
  • 做js题目的网站知乎太原网站建设方案优化
  • 长沙有做网站的吗seo基础篇
  • 微企点网站建设手机百度正式版
  • 关键不一定seo研究协会网app
  • 做的网站怎么让百度收索时搜中国去中心化搜索引擎
  • 新手做网站的详细步骤2020国内搜索引擎排行榜
  • 学做网站难吗怎么推广网址
  • 福州网上商城网站建设推广软件免费