使用libsvm来训练mnist数据集

更新时间:2023-07-19 05:17:11 阅读: 评论:0

使⽤libsvm来训练mnist数据集在这篇 中我安装可libsvm,现在开始实现⽤libsvm来做⼿写数字识别
minst⽂件可以在下载。下载后参考官⽹和来弄清楚⽂件的结构。我就不细说了。
'''
@author:fengjiexyb
@time:2017-09-09
'''
# -*- coding:utf-8 -*-
import logging
import matplotlib.pyplot as plt
import numpy as np
import pickle
杭州公积金贷款
import random
盘古开天辟地的故事import struct
ls import imtools
from svmutil import *
def load_ocr_data():
features=[]
filename = 'data/train-images.idx3-ubyte'
#⼆进制⽅式读取⽂件
binfile = open(filename, 'rb')
buf = ad()
index = 0
# '>IIII'是说使⽤⼤端法读取4个unsinged int32
magic, numImages, numRows, numColumns = struct.unpack_from('>IIII', buf, index)
#游标变化
index += struct.calcsize('>IIII')
#训练集⼀共60000个图⽚
for i in range(60000):
#每个图⽚784=28*28个点,读出的数据类型是元组
# '>784B'的意思就是⽤⼤端法读取784个unsigned byte
im = struct.unpack_from('>784B', buf, index)
index += struct.calcsize('>784B')
#将元组数据转化为ndarray类型。这⾥的存储是⼀维的,如果显⽰图⽚要将它转化为⼆维的28*28
im = np.array(im)
4像什么features.append(im)
#读取标签
filename = 'data/train-labels.idx1-ubyte'
binfile = open(filename, 'rb')
buf = ad()
label=[]蒜烤肥肠
index = 0
magic, numImages = struct.unpack_from('>II', buf, index)
index += struct.calcsize('>II')
for i in range(60000):
#这⾥是1,我见过有⼈写9的。
im = struct.unpack_from('>1B', buf, index)
index += struct.calcsize('>1B')
#只要第⼀个元素(这样会存储数字),否则会在数字外有⽅括号。例如9->[9]
label.append(im[0])
return np.array(features),label
def load_test_data():
features=[]
filename = 'data/t10k-images.idx3-ubyte'
食品安全管理员培训
binfile = open(filename, 'rb')
buf = ad()
index = 0
magic, numImages, numRows, numColumns = struct.unpack_from('>IIII', buf, index)
index += struct.calcsize('>IIII')驴肉火烧介绍
index += struct.calcsize('>IIII')
#测试集数据量10000
for i in range(10000):
im = struct.unpack_from('>784B', buf, index)
index += struct.calcsize('>784B')
im = np.array(im)
features.append(im)
filename = 'data/t10k-labels.idx1-ubyte'
binfile = open(filename, 'rb')
buf = ad()大蒜的图片
label=[]
小小的船index = 0
magic, numImages = struct.unpack_from('>II', buf, index)    index += struct.calcsize('>II')
for i in range(10000):
im = struct.unpack_from('>1B', buf, index)
index += struct.calcsize('>1B')
label.append(im[0])
return np.array(features),label
# 加载训练数据
features,labels = load_ocr_data()
# 加载测试数据
test_features,test_labels = load_test_data()
# 训练⼀个线性SVM 分类器
features = map(list,features)
test_features = map(list,test_features)
prob = svm_problem(labels,features)
param = svm_parameter('-t 0')
m = svm_train(prob,param)
#保存模型,模型保存了不需要每次都重新训练
svm_save_model('model.dat', m)
# 读取模型
model = svm_load_model('model.dat')
# 在测试集上表现如何
res = svm_predict(test_labels,test_features,model)

本文发布于:2023-07-19 05:17:11,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/82/1104447.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:数据   读取   模型   训练   测试   保存
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图