Sklearn 支持向量机(SVM) mnist数据集 手写数字识别

本篇博客提示:很水,调api而已

最近在学SVM支持向量机,也不算学叭…就见识见识感受感受是什么一个东西,当黑箱的话,实际上就是一个分类器.然后想到是分类器的话就突然想到之前的验证码识别,那个调用的还是腾讯的api,毕竟不开源有点受制于人的感觉,就想着能不能用SVM来做一下识别,然后就开始降噪,二值化,分割图像.分割出来的效果不好不说,标注也很累…最后放弃了…不过还是想试试SVM,所以就想到了mnist数据集,用SVM训练试试看.

其实也没啥好说的…挺普通的流程.(sklearn的api封装的太舒服).唯一要注意的地方就是,下载数据集的时候可以去下一个mnist-original.mat 貌似原数据也行,没有研究.然后得复制到mldata文件夹里面去(跑一下代码提示不通过,然后就会多出这个文件夹了.

整体的训练过程挺慢的,应该是由于数据过多的原因…训练好模型后,我直接load都得七八分钟…但是准确率挺不错的:0.9871

from sklearn import svm
from sklearn.model_selection import train_test_split
from sklearn import svm
import numpy as np
import pandas as pd
import joblib

from sklearn.datasets import fetch_mldata
mnist = fetch_mldata('MNIST original', data_home='./dataset')
# print(mnist)
x = mnist['data']
y = mnist['target']
y = y.reshape(-1,1)
# print(x)
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.2,random_state=10)

# predictor = svm.SVC(gamma='scale', C=1.0,
#                     decision_function_shape='ovr', kernel='rbf')
# # 把数据丢进去

# predictor.fit(x_train, y_train)
# # 预测结果
# joblib.dump(predictor,'svm.pkl')

predictor = joblib.load('./svm.pkl')


result = predictor.predict(x_test)
# 准确率估计
print(result)
print(predictor.score(x_test,y_test))
# print(accurancy)

数据读取时的样子
在这里插入图片描述

你可能感兴趣的:(人工智能)