运用mnist实现手写数字的评估模型

本文介绍了使用sklearn库进行多分类任务的数据处理,包括加载MNIST数据集,划分训练集和测试集。接着,通过K近邻算法训练模型,并展示了如何评估模型性能,如混淆矩阵、交叉验证、精度、查全率和F1分数。这些评估指标对于理解模型在分类任务中的表现至关重要。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

数据处理

import numpy as np
import pandas as pds
from sklearn import datasets
mnist = datasets.load_digits()
images = mnist.images
data, labels = mnist.data, mnist.target
  • 查看图片
import matplotlib.pyplot as plt
plt.imshow(images[0])

在这里插入图片描述

划分数据集为训练集和测试集

  • 运用 sklearn 的方法
from sklearn.model_selection import train_test_split
images = images.reshape((1797, -1))
train_x, test_x, train_y, test_y = train_test_split(images, labels, test_size=0.2)

训练模型

  • 这里用了k邻算法进行数据分类
from sklearn.neighbors import KNeighborsClassifier
kn_clf = KNeighborsClassifier(10)
model = kn_clf.fit(train_x, train_y)

评估模型

混淆矩阵

在这里插入图片描述

大概是这样的一个计算方式

from sklearn.metrics import confusion_matrix
confusion_matrix(train_y, model.predict(train_x))

在这里插入图片描述

交叉验证


from sklearn.model_selection import cross_val_score
cross_val_score(kn_clf, train_x, train_y, cv=3)

在这里插入图片描述

精度和查全率

关于精度和查全率,可以查看我上一篇文章。
p1 = TP/TP + FP p2 = TP/TP + FN

from sklearn.metrics import recall_score, accuracy_score
print(accuracy_score(train_y, model.predict(train_x)))
recall_score(train_y, model.predict(train_x), average ="micro")

在这里插入图片描述

f1_score

x-u/std
在这里插入图片描述

这将会平均每个数字的权重,平时越大的数影响越大,现在大的和小的都被归属到0-1之间或特定数值间。
比如:平时10000, 100, 20, 对于10000的影响明显要更大,而现在10000- 8778/10000 范围也在0-1内,降低了大的数值影响的权重,而小数字不变。

from sklearn.metrics import f1_score
f1_score(train_y, model.predict(train_x),  average ="micro")

在这里插入图片描述
以上,就是目前学习到的多分类的评估方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

东哥aigc

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值