读取多张MNIST图片与利用BaseEstimator基类创建分类器
读取多张MNIST图片
在读取多张MNIST图片之前,我们先来看下读取单张图片如何实现
每张数字图片大小都为28 * 28的,需要将数据reshape成28 * 28的,采用最近邻插值,如下
def plot_digit(data):
img = data.reshape(28,28)
plt.imshow(img,cmap=matplotlib.cm.binary,interpolation='nearest')
plt.axis('off')
import matplotlib.pyplot as plt
import matplotlib
some_digit = X[36000]
plot_digit(some_digit)

现在来读取多张MNIST图片
需要确定每行显示多少张图片,根据照片数最多显示几行,最后一行有几个未填满,将每行进行连接起来
def plot_digits(instances,images_per_row = 10,**options):
size = 28
images_per_row = min(len(instances),images_per_row)
images = [instance.reshape(size,size) for instance in instances]
n_rows = (len(instances) - 1) // images_per_row +1
row_images = []
n_empty = n_rows * images_per_row - len(instances)
images.append(np.zeros((size,size*n_empty)))
for row in range(n_rows):
rimages = images[row * images_per_row:(row+1) * images_per_row]
row_images.append(np.concatenate(rimages,axis=1))
image = np.concatenate(row_images,axis=0)
plt.imshow(image,cmap=matplotlib.cm.binary,**options)
plt.axis('off')
import numpy as np
import os # to make this notebook's output stable across runs
np.random.seed(42) # To plot pretty figures
%matplotlib inline
import matplotlib as mpl
import matplotlib.pyplot as plt
mpl.rc('axes', labelsize=14)
mpl.rc('xtick', labelsize=12)
mpl.rc('ytick', labelsize=12) # Where to save the figures
PROJECT_ROOT_DIR = "."
#CHAPTER_ID = "classification" def save_fig(fig_id, tight_layout=True):
path = os.path.join(PROJECT_ROOT_DIR, "images", fig_id + ".png")
print("Saving figure", fig_id)
if tight_layout:
plt.tight_layout()
plt.savefig(path, format='png', dpi=300)
plt.figure(figsize=(9,9))
example_images = np.r_[X[:12000:600], X[13000:30600:600], X[30600:60000:590]]
plot_digits(example_images, images_per_row=10)
save_fig("more_digits_plot")
plt.show()
显示并将结果存入磁盘

利用BaseEstimator基类创建分类器
在做非5分类器的交叉验证时,需要写一个非5的分类器
估计器(Estimator)很多时候可以直接理解成分类器,主要包括两个函数
- fit():训练算法,设置内部参数,接受训练集和类别两个参数
- predict():预测测试集类别,参数为测试集
大多数sklearn估计器接受和输出的数据格式均为numpy数组或类似格式
from sklearn.base import BaseEstimator
class Never5Classifier(BaseEstimator):
def fit(self,X,y = None):
pass
def predict(self,X):
return np.zeros((len(X),1),dtype = bool)
never_5_clf = Never5Classifier()
cross_val_score(never_5_clf,X_train,y_train_5,cv = 3,scoring='accuracy')

Never5Classifier分类器预测的结果都是0,而数字为5的标签应该都为1,非5的为0,这时候可以看出也有90%的可能性猜对某张图片不是5
关于评估器以及转换器、流水线(Pipline)等更多参考:https://www.jianshu.com/p/516f009c0875
读取多张MNIST图片与利用BaseEstimator基类创建分类器的更多相关文章
- MATLAB读取一张RGB图片转成YUV格式
1.读入照片 控制输出的标志定义 clc;close all;clear YES = 1; NO = 0; %YES表示输出该文件,请用户配置 yuv444_out_txt = 1; yuv444_o ...
- 面向对象的特性-利用prototype为类创建静态成员
—————————————————————————— <script type="text/javascript"> //用function模拟一 ...
- ASP.NET MVC with Entity Framework and CSS一书翻译系列文章之第二章:利用模型类创建视图、控制器和数据库
在这一章中,我们将直接进入项目,并且为产品和分类添加一些基本的模型类.我们将在Entity Framework的代码优先模式下,利用这些模型类创建一个数据库.我们还将学习如何在代码中创建数据库上下文类 ...
- python读取,显示,保存mnist图片
python处理二进制 python的struct模块可以将整型(或者其它类型)转化为byte数组.看下面的代码. # coding: utf-8 from struct import * # 包装成 ...
- [TFRecord格式数据]利用TFRecords存储与读取带标签的图片
利用TFRecords存储与读取带标签的图片 原创文章,转载请注明出处~ 觉得有用的话,欢迎一起讨论相互学习~Follow Me TFRecords其实是一种二进制文件,虽然它不如其他格式好理解,但是 ...
- opencv3.2.0实现读取多张图片的方法(利用sprintf()函数)
简介: 将连续的图片转换成视频时,首先需要把图片全部读入,然后再做相应处理,该程序利用sprintf()函数,实现连续图片的读入 /*********新建QT控制台程序,实现多张连续图片的读取**** ...
- java图片处理——多张图片合成一张Gif图片并播放或Gif拆分成多张图片
1.多张jpg图合成gif动画 /** * 把多张jpg图片合成一张 * @param pic String[] 多个jpg文件名 包含路径 * @param newPic String 生成的gif ...
- 【Android】读取sdcard上的图片
Android读取sdcard上的图片是很easy的事情,以下用一个样例来说明这个问题. 首先,在sdcard上有一张已经准备好的img25.jpg 以下,须要做的是把这张图片读取到app中显示. 做 ...
- Open Xml 读取Excel中的图片
在我的一个项目中,需要分析客户提供的Excel, 读出其中的图片信息(显示在Excel的第几行,第几列,以及图片本身). 网络上有许多使用Open Xml插入图片到Word,Excel的文章, 但 ...
随机推荐
- IP地址规划
IP地址(Internet Protocol Address),缩写为IP Adress,是一种在Internet上的给主机统一编址的地址格式,也称为网络协议(IP协议)地址.它为互联网上的每一个网络 ...
- 【PAT甲级】1018 Public Bike Management (30 分)(SPFA,DFS)
题意: 输入四个正整数C,N,S,M(c<=100,n<=500),分别表示每个自行车站的最大容量,车站个数,此次行动的终点站以及接下来的M行输入即通路.接下来输入一行N个正整数表示每个自 ...
- in comment after two dashes (--) next character must be > not - (position: START_TAG seen ...
Error executing Maven. in comment after two dashes (--) next character must be > not - (position: ...
- Python 基础之模块之os os.path 及os与shutil对比
一: os 对系统进行操作 #注:以下操作都在linux环境下操作,且很多运行之前需要做好相关条件import os#(1)system() 在python总执行系统命令#os.system(&quo ...
- Mybatis 条件判断单双引号解析问题
最近使用 Mybatis 遇到了一个奇怪的问题,前端传了一个数字字符串(type = "1") ,我做了如下判断: <if test=" type == '1' & ...
- 8年经验面试官详解 Java 面试秘诀
作者 | 胡书敏 责编 | 刘静 出品 | CSDN(ID:CSDNnews) 本人目前在一家知名外企担任架构师,而且最近八年来,在多家外企和互联网公司担任Java技术面试官,前后累计面试了有两三 ...
- 科学计算库(BLAS,LAPACK,MKL,EIGEN)
函数库接口标准:BLAS (Basic Linear Algebra Subprograms)和LAPACK (Linear Algebra PACKage) 1979年,Netlib首先用Fortr ...
- 【转】干货分享-100个shell脚本
本文用于记录学习和日常中使用过的shell脚本 [脚本1]打印形状 打印等腰三角形.直角三角形.倒直角三角形.菱形 #!/bin/bash # 等腰三角形 read -p "Please i ...
- 吴裕雄--天生自然PYTHON爬虫:安装配置MongoDBy和爬取天气数据并清洗保存到MongoDB中
1.下载MongoDB 官网下载:https://www.mongodb.com/download-center#community 上面这张图选择第二个按钮 上面这张图直接Next 把bin路径添加 ...
- 重大消息:华为笔记本电脑开始用LINUX系统
对华为而言,此举不失为一个明智的抉择.在手机操作系统领域,目前已被苹果的IOS系统和谷歌的安卓系统垄断.而IOS系统是封闭式,只为苹果手机使用:安卓是开放性,当谷歌与华为停止合作后.华为手机将无法使用 ...