2009-06-07 5 views
34

Я ищу некоторые относительно простые наборы данных для тестирования и сравнения различных методов обучения для искусственных нейронных сетей. Мне нужны данные, которые не потребуют слишком много предварительной обработки, чтобы превратить ее в мой формат ввода списка входов и выходов (нормированный на 0-1). Любые ссылки оценили.Наборы данных для обучения нейронной сети

ответ

28

Почему бы не попробовать что-то простое, как функция sin, как данные обучения? Поскольку вы сравниваете методы обучения и не заботитесь о том, для чего вы тренируете сеть, она должна работать и быть легким для создания данных обучения.

Постройте сеть, используя sin (x), где x - вход, а выход - значение функции. Дополнительным преимуществом в вашем случае является то, что абсолютное значение результата уже находится в диапазоне 0-1. Он будет одинаково работать с другими математическими функциями.

+0

Да, это отличная точка. Тем не менее, мне все равно нравятся некоторые проблемы с большими размерами. Я думаю, я мог бы генерировать их из уравнений тоже. Благодарю. –

+1

@JeffThomas Я хотел бы узнать, действительно ли кто-то на самом деле выполнил SIN-аппроксимацию с помощью NN. Если да, какова была ваша окончательная ошибка и настройка сети? –

3

Я изучил ANN в качестве бакалавра, используя их для выполнения OCR (оптического распознавания символов). Я думаю, что это хороший прецедент.

Сканирование на двух страницах текста, извлечение букв и подготовка учебных/тестовых наборов данных (например, 8x8 пикселей приводит к 64 входным узлам), маркировка данных. Обучите ANN и получите оценку, используя набор данных тестирования. Измените топологию/параметры сети и настройте сеть, чтобы получить лучший результат.

47

https://archive.ics.uci.edu/ml - это Калифорнийский университет в Ирвинском хранилище данных машинного обучения. Это действительно отличный ресурс, и я считаю, что все они находятся в файлах CSV.

+1

Эй, это довольно аккуратно. Именно то, что я искал. – Mumbleskates

11

Некоторые ресурсы

  • Функция Sinc.

     +---- 
         | sin(x) 
         | -------  when x != 0 
         |  x 
    sinC = | 
         | 
         |  1   otherwise 
         +---- 
    
  • sin(x) функция, как @adrianbanks сказал.

  • Для тестирования некоторой новой модификации какого-либо алгоритма используются старые добрые тесты на четность.

  • Набор данных Iris, набор данных с цифровой записью и т.д., любые другие функции и многое другое.

  • The UCI Machine Learning Repository: archive.ics.uci.edu/ml/datasets.html

  • Вот еще один ресурс, имеющий множество наборов данных регрессии: www.dcc.fc.up.pt/~ltorgo//Regression/DataSets.html. Вы получите много из них из репозитория UCI ML.
  • Вы можете получить наборы данных от https://www.kaggle.com/ для различных практических наборов данных.

Я не думаю, что вам требуется много предварительной обработки с ними. Как и для категориальных переменных, вы можете быстро заменить их двоичным кодом с помощью графического редактора графического интерфейса. Например, набор данных Abalone имеет один категориальный атрибут, Пол, который имеет три значения «M» для мужчин, «F» для женщин, «I» для младенцев. Вы можете нажать Ctrl + R в текстовом редакторе и заменить все вхождения «M» на 1,0,0, все вхождения «F» с 0,1,0 и все вхождение «I» с 0,0,1 (учитывая, что файл находится в формате CSV). Это быстро заменит категориальные переменные.

Если вы в R, то вы можете использовать функцию normalizeData, которая приходит с RSNNS package масштабировать и нормализовать данные в 0 и 1.

Если вы находитесь в другой среде, как octave или matlab, вы можете просто инвестируйте некоторое время, чтобы написать свой код. Я не знаю доступных функций в этих средах, я использую свой код для масштабирования и/или нормализации данных.

Когда вы используете функции, ваша работа сделана намного проще, и как только вы подготовите данные, сохраните измененные данные в файле.

Помните одно: целью обучения нейронной сети является не только обучение сети таким образом, чтобы она работала хорошо на определенном наборе тренировок. Основной целью является обучение сети таким образом, чтобы она имела лучшую ошибку для новых данных, которые сеть не увидела (прямо или косвенно).

+1

Лучший ответ, который я нашел до сих пор на вопросы о наборах данных ...! –

4

Вот несколько почерков и других баз данных для целей обучения.

http://www.cs.nyu.edu/~roweis/data.html

Как интересное примечание стороны, ~ roweis совершил самоубийство в 2010 году после борьбы с его женой: http://www.huffingtonpost.com/2010/01/14/sam-roweis-nyu-professor-_n_421500.html.

+0

+1. Спасибо! Очень жутко, читая слова этого человека, зная состояние своего разума, когда они были написаны. – sherrellbc