Как читать базу данных MNIST в R?
в настоящее время я работаю над тематическим исследованием, для которого мне нужно работать над база данных MNIST.
Файлы в этот сайт, как говорят, в формате IDX файла. Я попытался взглянуть на эти файлы с помощью основных текстовых редакторов, таких как блокнот и wordpad, но не повезло.
Ожидая, что они будут в формате high endian, я попробовал следующее:
to.read = file("t10k-images.idx3-ubyte", "rb")
readBin(to.read, integer(), n=100, endian = "high")
Я получил некоторые числа в качестве вывода, но ни один из них не имел никакого смысла ко мне.
может ли кто-нибудь объяснить, как читать файлы базы данных MNIST в R и как интерпретировать эти цифры? Спасибо.
3 ответов
endian="big"
, а не "high"
:
> to.read = file("~/Downloads/t10k-images-idx3-ubyte", "rb")
магическое число:
> readBin(to.read, integer(), n=1, endian="big")
[1] 2051
количество изображений:
> readBin(to.read, integer(), n=1, endian="big")
[1] 10000
количество строк:
> readBin(to.read, integer(), n=1, endian="big")
[1] 28
количество колонок:
> readBin(to.read, integer(), n=1, endian="big")
[1] 28
здесь приходит данные:
> readBin(to.read, integer(), n=1, endian="big")
[1] 0
> readBin(to.read, integer(), n=1, endian="big")
[1] 0
согласно описанию данных по изображения набора тренировки на вебсайте.
теперь вам просто нужно зациклить и прочитать 28 * 28 байтовых кусков в матрицы.
старт опять:
> to.read = file("~/Downloads/t10k-images-idx3-ubyte", "rb")
пропустить заголовок:
> readBin(to.read, integer(), n=4, endian="big")
[1] 2051 10000 28 28
должен действительно получить 28,28 из заголовка, но жестко закодированный здесь:
> m = matrix(readBin(to.read,integer(), size=1, n=28*28, endian="big"),28,28)
> image(m)
может потребоваться транспонировать или перевернуть матрицу, я думаю, что это перевернутый "7".
par(mfrow=c(5,5))
par(mar=c(0,0))
for(i in 1:25){m = matrix(readBin(to.read,integer(), size=1, n=28*28, endian="big"),28,28);image(m[,28:1])}
получает вас:
О, и google приводит меня к:http://www.inside-r.org/packages/cran/darch/docs/readMNIST что может быть полезно.
после darch
(не ~Darch
~) пакет, упомянутый выше:
пакет называется darch
. Он был перемещен в MRAN (Microsoft R Application Network), но также доступен на CRAN.
он предоставляет две функции для данных MNIST:
readMNIST
читает ubyte файлы, хранящиеся на вашем жестком диске и сохраняет их как test.Rdata
и train.Rdata
архивов.
provideMNIST
который загрузит файлы и вызов readMNIST
на них.
при вызове этих функций вам нужно дать имена каталогов, разделенных одной чертой, например,readMNIST("..\MNIST\")
(требуется последняя косая черта).
если вы загружаете файлы самостоятельно, вам нужно будет изменить имена файлов: архивы gz содержат файлы с расширениями, такими как t10k-этикетки.idx1-ubyte но readMNIST
ищет файлы без расширения, как t10k-метки-idx1-ubyte, поэтому вы должны изменить точку на тире (с darch
версия 0.12.0, возможно, они исправят это).
для загрузки файлов в R
вам нужно использовать
вот как вы можете сделать это с помощью :
выполнить
readMNIST('C:/Users/pj_/Dir/')
, который будет хранить test.RData
и train.RData
в каталоге set.
При загрузке этих двух файлов в рабочую область вы сможете увидеть 'testData
','testLabels
','trainData
' и 'trainLabels
' в глобальной среде.