Известные наборы данных — различия между версиями

Материал из Викиконспекты
Перейти к: навигация, поиск
м
м
Строка 16: Строка 16:
  
 
[[Файл:Mnist-predict.png|мини]]
 
[[Файл:Mnist-predict.png|мини]]
 +
  import numpy
 +
  import random
 +
  import matplotlib.pyplot as plt
 
   from sklearn import datasets, svm, metrics
 
   from sklearn import datasets, svm, metrics
   from sklearn.datasets import fetch_mldata
+
   from sklearn.datasets import load_iris,fetch_mldata
  import random
 
 
   from sklearn.utils import shuffle
 
   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
 
   from numpy import arange
  from sklearn.tree import DecisionTreeClassifier
+
 
 +
 
 
   mnist = fetch_mldata('MNIST original')
 
   mnist = fetch_mldata('MNIST original')
 
   indices = arange(len(mnist.data))
 
   indices = arange(len(mnist.data))
Строка 91: Строка 100:
  
 
===Код===
 
===Код===
 
  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()
 
   iris=load_iris()
 
   X = iris.data
 
   X = iris.data

Версия 01:06, 8 апреля 2019

Известные наборы данных

MNIST

Описание

MnistExamples.png

Датасет MNIST — большой (порядка 60 000 тренировочных и 10 000 проверочных объектов) набор картинок с рукописными цифрами, часто используемый для тестирования различных алгоритмов распознавания образов. Он содержит черно-белые картинки размера 28x28 пикселей, исходно взятые из набора образков из бюро переписи населения США, к которым были добавлены тестовые образцы, написанные студентами американских университетов.

Результаты

На сайте[1] датасета можно найти список лучших результатов, достигнутых алгоритмами на это наборе данных. Так, худший из записанных результатов достигнут простым линейным классификатором (12% ошибок), а подавляющее большинство лучших результатов получены алгоритмами на основе нейронных сетей. Так, ансамбль из 35 сверточных нейронных сетей в 2012 году сумел получить всего 0.23% ошибок на датасете, что является очень хорошим результатом, вполне сравнимым с человеком.

Код

Простой пример, скачивающий набор данных и запускающий на нем один из классификаторов. Даже с уменьшением датасета в сто раз и не самым подходящим классификатором точность выше половины угаданных цифр — заметно лучше, чем случайная разметка.

Mnist-predict.png
 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


ImageNet