Известные наборы данных
Известные наборы данных
Содержание
MNIST
Описание
Датасет MNIST — большой (порядка 60 000 тренировочных и 10 000 проверочных объектов) набор картинок с рукописными цифрами, часто используемый для тестирования различных алгоритмов распознавания образов. Он содержит черно-белые картинки размера 28x28 пикселей, исходно взятые из набора образков из бюро переписи населения США, к которым были добавлены тестовые образцы, написанные студентами американских университетов.
Результаты
На сайте[1] датасета можно найти список лучших результатов, достигнутых алгоритмами на это наборе данных. Так, худший из записанных результатов достигнут простым линейным классификатором (12% ошибок), а подавляющее большинство лучших результатов получены алгоритмами на основе нейронных сетей. Так, ансамбль из 35 сверточных нейронных сетей в 2012 году сумел получить всего 0.23% ошибок на датасете, что является очень хорошим результатом, вполне сравнимым с человеком.
Код
Простой пример, скачивающий набор данных и запускающий на нем один из классификаторов. Даже с уменьшением датасета в сто раз и не самым подходящим классификатором точность выше половины угаданных цифр — заметно лучше, чем случайная разметка.
import numpy import random import matplotlib.pyplot as plt from sklearn import datasets, svm, metrics from sklearn.datasets import load_iris,fetch_mldata from sklearn.utils import shuffle from sklearn.ensemble import RandomForestClassifier from sklearn.tree import DecisionTreeClassifier from keras.utils import to_categorical from keras.datasets import cifar10 from keras.preprocessing.image import ImageDataGenerator from keras.callbacks import ModelCheckpoint, CSVLogger from numpy import arange
mnist = fetch_mldata('MNIST original') indices = arange(len(mnist.data)) randidx = random.sample(list(indices), 500) mnist.data = mnist.data[randidx] mnist.target = mnist.target[randidx] X = mnist.data Y = mnist.target train = len(X)//2 clf = DecisionTreeClassifier(criterion="entropy", max_depth=5) clf.fit(X[:train], Y[:train]) expected = Y[train:] predicted = clf.predict(X[train:]) print("Classification report for classifier %s:\n%s\n" % (clf, metrics.classification_report(expected, predicted)))
digit precision recall f1-score support 0 0.68 0.58 0.62 26 1 0.71 0.87 0.78 23 2 0.29 0.24 0.26 25 3 0.64 0.28 0.39 25 4 0.50 0.54 0.52 28 5 0.46 0.46 0.46 24 6 0.47 0.62 0.54 24 7 0.66 0.78 0.71 27 8 0.32 0.60 0.42 15 9 0.59 0.39 0.47 33 avg/total 0.54 0.53 0.52 250
CIFAR-10
Iris
Описание
Iris — небольшой набор данных для задачи классификации, опубликованный еще в 1936 году Робертом Фишером, используя данные биолога Эдгара Андерсона. В этом наборе данных представлены по 50 описаний цветков одного из трех типов — Ирис щетинистый (Iris setosa), Ирис виргинский (Iris virginica) и Ирис разноцветный (Iris versicolor).
Для каждого цветка измерены четыре величины — длина чашелистника (англ. sepal length), ширина чашелистника (sepal width), длина лепестка (англ. petal length), ширина лепестка (англ. petal width). Все цветки промаркированы одним из трех типов, что позволяет тестировать на нем алгоритмы классификации. Интересное наблюдение — один из классов цветков линейно отделим от двух других.
Пример
Длина чашелистника | Ширина чашелистника | Длина лепестка | Ширина лепестка | Класс |
---|---|---|---|---|
5.1 | 3.5 | 1.4 | 0.2 | setosa |
7.0 | 3.2 | 4.7 | 1.4 | versicolor |
6.3 | 3.3 | 6.0 | 2.5 | virginica |
Код
iris=load_iris() X = iris.data Y = iris.target X, Y = shuffle(X, Y) n = len(iris.data) train = n // 2 clf = RandomForestClassifier(n_estimators=100, max_depth=2, random_state=0) clf.fit(X[:train], Y[:train]) expected = Y[train:] predicted = clf.predict(X[train:]) print("Classification report for classifier %s:\n%s\n" % (clf, metrics.classification_report(expected, predicted)))
type precision recall f1-score support 0 1.00 1.00 1.00 28 1 0.95 0.88 0.91 24 2 0.88 0.96 0.92 23 avg / total 0.95 0.95 0.95 75