使用R加载MNIST数字识别数据集并查看任何结果

问题描述 投票:0回答:1

在“Machine Learning - A Probabilistic Perspective" by Kevin P. Murphy”一书的第一个任务是:

在混洗的MNIST数据上练习1.1 KNN分类器

运行mnist1NNdemo并验证1-NN分类器的MNIST的错误分类率(在前1000个测试用例中)是3.8%。 (如果在所有10,000个测试用例中全部运行,则错误率为3.09%。)修改代码,以便首先随机置换功能(训练和测试设计矩阵的列),如shuffledDigitsDemo,然后应用分类。验证错误率未更改。

我的简单理解是练习在加载文件后寻找1-NN(R中的kNN())。

文件:

train-images-idx3-ubyte.gz:训练集图像(9912422字节)

train-labels-idx1-ubyte.gz:训练集标签(28881字节)

t10k-images-idx3-ubyte.gz:测试集图像(1648877字节)

t10k-labels-idx1-ubyte.gz:测试集标签(4542字节)

取自The MNIST DATABASE

我找到了加载文件的popular template

# for the kNN() function 
library(VIM)
load_mnist <- function() {
  load_image_file <- function(filename) {
   ret = list()
    f = file(filename,'rb')
    readBin(f,'integer',n=1,size=4,endian='big')
    ret$n = readBin(f,'integer',n=1,size=4,endian='big')
    nrow = readBin(f,'integer',n=1,size=4,endian='big')
    ncol = readBin(f,'integer',n=1,size=4,endian='big')
    x = readBin(f,'integer',n=ret$n*nrow*ncol,size=1,signed=F)
    ret$x = matrix(x, ncol=nrow*ncol, byrow=T)
    close(f)
    ret
  }
  load_label_file <- function(filename) {
    f = file(filename,'rb')
    readBin(f,'integer',n=1,size=4,endian='big')
    n = readBin(f,'integer',n=1,size=4,endian='big')
    y = readBin(f,'integer',n=n,size=1,signed=F)
    close(f)
    y
  }
  train <<- load_image_file("train-images.idx3-ubyte")
  test <<- load_image_file("t10k-images.idx3-ubyte")

  train$y <<- load_label_file("train-labels.idx1-ubyte")
  test$y <<- load_label_file("t10k-labels.idx1-ubyte")  
}

show_digit <- function(arr784, col=gray(12:1/12)) {
  image(matrix(arr784, nrow=28)[,28:1], col=col)
}

根据评论,在命令行中这应该工作:

  # Error "Error in matrix(arr784, nrow = 28) : object 'train' not found"
  show_digit(train$x[5,])

问题是如何使用show_digit函数?


编辑删除额外的问题

r machine-learning mnist
1个回答
0
投票

我想出了什么问题:

首先在R Studio或ESS中运行整个文件,然后从控制台调用load_mnist()。之后再次在控制台中执行show_digit(train$x[3,])并且它可以工作。

找到KNN分类器可以在整个数据集上完成:a <- knn(train, test, train$y),但这将是一个非常缓慢的过程。

结果的预测可以像table(test$y, a)那样完成,测试$ y是预测的,a是实际结果。

© www.soinside.com 2019 - 2024. All rights reserved.