利用Scikit-learm实现手写数字识别

利用Scikit-learm实现手写数字识别

Scikit-learm库种自带一个手写数字数据集,其中包含1797个手写数值样本,每个样本由8×8的二维数组,数组元素为0-16之间的整数,每个样本都有对应的标签,标签为0-9之间的整数。可以把手写数值识别看成是10分类。

在这里插入图片描述

代码:

from sklearn import datasets
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn.neural_network import MLPClassifier
from sklearn.metrics import precision_score
import numpy as np

def draw():#画出手写数据集的前36张图
    for i in range(36):
        plt.subplot(6,6,i+1)
        plt.imshow(digits.images[i])
    plt.show()
    pass

digits=datasets.load_digits() #调用Scikit库中的手写数据集
x=digits.data          #定义数据集中的数据,为[1797,64]的矩阵
y=digits.target        #定义数据集中的标签, 为[1797,]的矩阵
x_train,x_test,y_train,y_test=train_test_split(x,y,test_size=0.2)#数据集和测试集比例为8:2
model=MLPClassifier() #调用多层感知机网络,激活函数默认为relu,隐藏层为100个神经元
model.fit(x_train,y_train) #输入训练集训练
y_predict=model.predict(x_test) #输入测试集得到预测结果
error=np.nonzero(y_test - y_predict) #测试集实际结果与预期结果进行比较
p_1=1 - len(error[0]) / len(y_test)  #求得总的识别率
p_2=precision_score(y_test,y_predict,average=None) #当average=None时求得是各个类别的识别率
p_3=precision_score(y_test,y_predict,average="micro") #总的识别率,跟p_1一样
print(p_2,p_3)

#print(digits.data.shape)
#print(digits.target.shape)
#print(digits.images.shape)
draw()
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: scikit-learn是一个Python机器学习库,其中包含了许多常用的机器学习算法和工具。其中之一是数字识别,它可以用于识别数字的图像。这个功能可以通过使用scikit-learn中的支持向量机(SVM)算法来实现。SVM是一种强大的分类算法,可以用于处理高维数据,并且在处理图像和文本等非结构化数据时表现良好。在使用SVM进行数字识别时,我们需要将图像转换为数字向量,并使用训练数据来训练模型。一旦模型训练完成,我们就可以使用它来预测新的数字图像的标签。 ### 回答2: scikit-learn是一个用于机器学习的Python库,它与NumPy和SciPy一起组成了Python科学计算的核心三个库之一。其中,scikit-learn具有非常强大的特征,例如分类、回归、聚类和降维等算法支持,以及交叉验证、模型选择和数据预处理等方便的功能。在机器学习中,数字识别一直是一个重要的应用场景,而scikit-learn提供的mnist数据集,则是实现数字识别的基础。 mnist数据集由70,000张28x28像素的数字图像组成,其中,60,000张用于训练模型,10,000张用于测试模型。在Python代码中,可以使用sklearn.datasets.load_digits()方法加载mnist数据集。加载完成后,数据集可以使用train_test_split()方法进行切分,将数据集分为训练集和测试集。同时,图像的像素点可以通过reshape()方法转换为二维数组。 在数字识别中,使用的是分类算法,sklearn中提供了多种分类算法,包括决策树、随机森林、KNN等。例如使用随机森林,可以通过建立RandomForestClassifier()实例来训练模型,使用fit()方法进行训练,并使用predict()方法进行预测。同时,可以通过score()方法输出模型在测试数据上的准确率。 在实际使用中,数字识别可以通过图形界面或者Web应用进行展示。例如,可以使用Python的Tkinter库或者Django等Web框架来构建图形界面或者Web应用。 需要注意的是,数字识别是一个非常常见的机器学习应用场景,也被广泛应用于硬件控制、智能安防的开发中,模型的训练和调参需要根据实际场景灵活调整,从而达到更好的识别效果。 ### 回答3: scikit-learn数字识别是一种常用的机器学习模型,它使用Python语言和scikit-learn包来实现。该模型可以通过输入数字图像并使用分类算法来识别这些图像所代表的数字数字识别在许多领域都有应用,例如安全验证、自动邮递处理和医学图像识别等。 在实现数字识别模型时,首先需要准备训练数据集和测试数据集。训练数据集通常包含一系列已知的数字图像和它们所对应的数字标签。测试数据集包含一系列不同的数字图像,用于测试模型的分类效果。 接下来,需要通过特征提取来将数字图像转化为数值特征。通常使用的特征提取方法包括图像切割、边缘检测、色彩模型等。在这个步骤中,需要将所有的数字图像转换为归一化的、相同大小的灰度图像,并用特定的算法提取出每个图像的特征值。 然后,使用scikit-learn提供的分类器(例如K-近邻算法或支持向量机算法)对输入的数字图像进行分类。训练数据集和测试数据集分别用于模型的训练和测试,可以通过调整算法参数和模型参数来进一步提高分类效果。 最后,使用训练好的模型对新的数字图像进行分类,得到它们所代表的数字值。除了通过界面输入图像外,还可以通过其他途径的图片的读取,转模型时需要注意对数据进行预处理。 总的来说,scikit-learn数字识别是一种强大的机器学习模型,并且可以使用Python语言进行实现。它的准确性和可扩展性都非常高,在许多领域都有广泛的应用前景。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值