Известные наборы данных
Известные наборы данных
MNIST
Описание
Датасет MNIST — большой (порядка 60 000 тренировочных и 10 000 проверочных объектов) набор картинок с рукописными цифрами, часто используемый для тестирования различных алгоритмов распознавания образов. Он содержит черно-белые картинки размера 28x28 пикселей, исходно взятые из набора образков из бюро переписи населения США, к которым были добавлены тестовые образцы, написанные студентами американских университетов.
Результаты
На сайте[1] датасета можно найти список лучших результатов, достигнутых алгоритмами на это наборе данных. Так, худший из записанных результатов достигнут простым линейным классификатором (12% ошибок), а подавляющее большинство лучших результатов получены алгоритмами на основе нейронных сетей. Так, ансамбль из 35 сверточных нейронных сетей в 2012 году сумел получить всего 0.23% ошибок на датасете, что является очень хорошим результатом, вполне сравнимым с человеком.
Код
Простой пример, скачивающий набор данных и запускающий на нем один из классификаторов. Даже с уменьшением датасета в сто раз и не самым подходящим классификатором точность выше половины угаданных цифр — заметно лучше, чем случайная разметка.
from sklearn import datasets, svm, metrics from sklearn.datasets import fetch_mldata import random from sklearn.utils import shuffle from numpy import arange from sklearn.tree import DecisionTreeClassifier 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 |
Код
from sklearn.datasets import load_iris from sklearn import svm, metrics from sklearn.utils import shuffle from sklearn.ensemble import RandomForestClassifier import numpy 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