栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Sklearn图像分类(基于MNIST数据集)

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Sklearn图像分类(基于MNIST数据集)

MNIST数据集是一个手写数字数据集,里面具有成百上千的手写字体数据,本次项目的内容就是使用MNIST数据集实现一个简单的图像识别任务。

首先通过如下命令下载本次项目所用到的数据包

#安装numpy
# pip install numpy -i https://pypi.tuna.tsinghua.edu.cn/simple
#安装opencv
# pip install opencv-python -i https://pypi.tuna.tsinghua.edu.cn/simple
#安装opencv
# pip install scikit-learn -i https://pypi.tuna.tsinghua.edu.cn/simple

然后下载数据集,本次下载的数据集是从Kaggle上面下载的,直接访问kaggle网站搜索MNIST就能够看到本次的数据集了,下载网址如下:

Digit Recognizer | Kaggle

下载之后,我们开始编写主要的实现代码:

首先读入数据,然会对其进行显示:

import pandas as pd
test_frame = pd.read_csv(test_path)
train_frame = pd.read_csv(train_path)

  之后切分样本和标签,如上数据所示,其中label是作为整个数据的标签,然后pixel0-783是样本数据的数据点:

    
import matplotlib.pyplot as plt

import numpy as np

train = train_frame.copy()
y = train['label']
X = train.drop(['label'],axis=1)

使用matpyplot显示图像,在csv中我们的样本使用一个一维向量的模式进行标识,但是我们知道图片一般是一个二维矩阵的形式,所以我们需要对他进行reshape操作,respahe成(28x28)的矩阵,然后对他进行显示:

import matplotlib.pyplot as plt
import seaborn as sns
plt.figure(figsize=(15,3))
plt.plot(1,1)

Xc = {i: X.loc[train_frame['label'] == i,:] for i in range(10)}

for i in range(30):
    plt.subplot(3,10,i+1)
    #转换为矩阵形式
    sns.heatmap(np.reshape(np.array(Xc[i%10].iloc[i//10,:]), (28,28)),
                xticklabels=False,yticklabels=False,cbar=False,cmap='binary')

 使用sklearn封装的分类算法来训练我们的数据:

#导入模型,KNeighborsClassifier(knn),SVC(svcm)
from sklearn.neighbors import KNeighborsClassifier
from sklearn.svm import LinearSVC,SVC


knn = KNeighborsClassifier(n_neighbors =10)
svc = SVC()
linear_svc =LinearSVC()

#3.8
# knn.fit(X,y)
knn.fit(X,y)
svc.fit(X,y)
linear_svc.fit(X,y)

查看训练的准确率:

 

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/925778.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号