Как загрузить датасет
Перейти к содержимому

Как загрузить датасет

  • автор:

Как загрузить csv датасет?

У меня есть csv датасет рукописных букв(https://www.kaggle.com/ashishguptajiit/handwritten-az), как я могу на его основе обучить нейросеть? Как загрузить его нормально? Я работаю на python + tensorflow

  • Вопрос задан более трёх лет назад
  • 1199 просмотров

2 комментария

Простой 2 комментария

longclaps

Я работаю на python + tensorflow

Да ну, врёшь.

adugin

Andrey Dugin @adugin Куратор тега Python

Есть гугл, там миллиард примеров. На том же Kaggle есть сотни выложенных примеров кода с готовыми решениями. Если вам лень потратить своё время, чтобы разобраться — заплатите за решение задачи на фрилансе.

Решения вопроса 0
Ответы на вопрос 2

Да ну! Работаешь на Python и не можешь файл загрузить.
Бросай ты это дело: рукописные буквы, нейросеть, tensorflow всякие.
Нельзя учить атомную физику не выучив таблицу умножения. Или спорить будешь? Так почему ты решил, что сможешь работать с нейросетями не научившись элементарно программировать? А то боюсь, следующим вопросом будет «как цикл написать».
Да, и по ходу подтяни свои навыки поиска в Гуугл. Очень пригодится.

Ответ написан более трёх лет назад
Комментировать
Нравится 1 Комментировать
Загрузить csv можно с помощью pandas, функция read_csv
Ответ написан более трёх лет назад
Комментировать
Нравится 1 Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

python

  • Python
  • +1 ещё

Почему при большом количестве строк async выдает ошибку?

  • 1 подписчик
  • час назад
  • 10 просмотров

7.4. Загрузка других наборов данных ¶

Scikit-learn также встраивает несколько образцов изображений в формате JPEG, опубликованных их авторами по лицензии Creative Commons. Эти изображения могут быть полезны для тестирования алгоритмов и конвейеров на 2D-данных.

load_sample_images () Загрузите образцы изображений для обработки изображений.
load_sample_image (имя_изображения) Загрузите массив numpy одного образца изображения

Кодирование изображений по умолчанию основано на uint8 dtype, чтобы освободить память. Часто алгоритмы машинного обучения работают лучше всего, если входные данные сначала преобразуются в представление с плавающей запятой. Кроме того, если вы планируете использовать matplotlib.pyplpt.imshow , не забудьте масштабировать до диапазона 0–1, как показано в следующем примере.

7.4.2. Наборы данных в формате svmlight / libsvm

scikit-learn включает служебные функции для загрузки наборов данных в формате svmlight / libsvm. В этом формате каждая строка принимает форму : : …. Этот формат особенно подходит для разреженных наборов данных. В этом модуле scipy разреженные матрицы CSR используются для X а массивы numpy используются для y

Вы можете загрузить набор данных следующим образом:

>>> from sklearn.datasets import load_svmlight_file >>> X_train, y_train = load_svmlight_file("/path/to/train_dataset.txt") .

Вы также можете загрузить два (или более) набора данных одновременно:

>>> X_train, y_train, X_test, y_test = load_svmlight_files( . ("/path/to/train_dataset.txt", "/path/to/test_dataset.txt")) .

В этом случае X_train и X_test гарантированно будет такое же количество функций. Другой способ добиться того же результата — исправить количество функций:

>>> X_test, y_test = load_svmlight_file( . "/path/to/test_dataset.txt", n_features=X_train.shape[1]) .

7.4.3. Скачивание наборов данных из репозитория openml.org

openml.org — это общедоступный репозиторий для данных машинного обучения и экспериментов, который позволяет всем загружать открытые наборы данных.

sklearn.datasets Пакет может загрузить наборы данных из хранилища с помощью функции sklearn.datasets.fetch_openml .

Например, чтобы загрузить набор данных экспрессии генов в мозге мышей:

>>> from sklearn.datasets import fetch_openml >>> mice = fetch_openml(name='miceprotein', version=4)

Чтобы полностью указать набор данных, вам необходимо указать имя и версию, хотя версия не является обязательной, см. « Версии набора данных» ниже. Набор данных содержит в общей сложности 1080 примеров, относящихся к 8 различным классам:

>>> mice.data.shape (1080, 77) >>> mice.target.shape (1080,) >>> np.unique(mice.target) array(['c-CS-m', 'c-CS-s', 'c-SC-m', 'c-SC-s', 't-CS-m', 't-CS-s', 't-SC-m', 't-SC-s'], dtype=object)

Вы можете получить более подробную информацию о наборе данных, глядя на DESCR и details атрибуты:

>>> print(mice.DESCR) **Author**: Clara Higuera, Katheleen J. Gardiner, Krzysztof J. Cios **Source**: [UCI](https://archive.ics.uci.edu/ml/datasets/Mice+Protein+Expression) - 2015 **Please cite**: Higuera C, Gardiner KJ, Cios KJ (2015) Self-Organizing Feature Maps Identify Proteins Critical to Learning in a Mouse Model of Down Syndrome. PLoS ONE 10(6): e0129126. >>> mice.details 

DESCR cодержит свободный текст описания данных, в то время как details содержит словарь мета-данных , которые хранятся openml, как набор данных ид. Дополнительные сведения см. В документации OpenML. Набор data_id данных белка мышей — 40966, и вы можете использовать это (или имя), чтобы получить дополнительную информацию о наборе данных на веб-сайте openml:

>>> mice.url 'https://www.openml.org/d/40966'

Также data_id уникально идентифицирует набор данных из OpenML:

>>> mice = fetch_openml(data_id=40966) >>> mice.details 

7.4.3.1. Версии набора данных

Набор данных однозначно определяется data_id своим именем, но не обязательно своим именем. Может существовать несколько разных «версий» набора данных с одним и тем же именем, которые могут содержать совершенно разные наборы данных. Если в определенной версии набора данных обнаружены серьезные проблемы, ее можно отключить. Использование имени для указания набора данных даст самую раннюю версию набора данных, которая все еще активна. Это означает, что fetch_openml(name=»miceprotein») в разное время могут быть получены разные результаты, если более ранние версии становятся неактивными. Вы можете видеть, что набор данных с data_id 40966, который мы получили выше, является первой версией набора данных «miceprotein»:

>>> mice.details['version'] '1'

Фактически, у этого набора данных есть только одна версия. С другой стороны, набор данных iris имеет несколько версий:

>>> iris = fetch_openml(name="iris") >>> iris.details['version'] '1' >>> iris.details['id'] '61' >>> iris_61 = fetch_openml(data_id=61) >>> iris_61.details['version'] '1' >>> iris_61.details['id'] '61' >>> iris_969 = fetch_openml(data_id=969) >>> iris_969.details['version'] '3' >>> iris_969.details['id'] '969'

Указание набора данных по имени «iris» дает самую низкую версию, версию 1, с data_id 61. Чтобы быть уверенным, что вы всегда получаете именно этот набор данных, безопаснее всего указывать его по набору данных data_id . Другой набор данных с data_id 969 — это версия 3 (версия 2 стала неактивной) и содержит бинаризованную версию данных:

>>> np.unique(iris_969.target) array(['N', 'P'], dtype=object)

Вы также можете указать имя и версию, которые также однозначно идентифицируют набор данных:

>>> iris_version_3 = fetch_openml(name="iris", version=3) >>> iris_version_3.details['version'] '3' >>> iris_version_3.details['id'] '969'
  • Ваншорен, ван Рейн, Бишл и Торго «OpenML: сетевая наука в машинном обучении» , ACM SIGKDD Explorations Newsletter, 15 (2), 49-60, 2014.

7.4.4. Загрузка из внешних наборов данных

scikit-learn работает с любыми числовыми данными, хранящимися в виде массивов numpy или scipy разреженных матриц. Другие типы, которые можно преобразовать в числовые массивы, такие как pandas DataFrame, также приемлемы.

Вот несколько рекомендуемых способов загрузки стандартных столбчатых данных в формат, используемый scikit-learn:

  • pandas.io предоставляет инструменты для чтения данных из распространенных форматов, включая CSV, Excel, JSON и SQL. DataFrames также могут быть созданы из списков кортежей или dicts. Pandas плавно обрабатывает разнородные данные и предоставляет инструменты для обработки и преобразования в числовой массив, подходящий для scikit-learn.
  • scipy.io специализируется на двоичных форматах, часто используемых в контексте научных вычислений, таких как .mat и .arff.
  • numpy / routines.io для стандартной загрузки столбчатых данных в массивы numpy
  • scikit-learn datasets.load_svmlight_file для разреженного формата svmlight или libSVM
  • scikit-learn datasets.load_files для каталогов текстовых файлов, где имя каждого каталога является именем каждой категории, а каждый файл внутри каждого каталога соответствует одному образцу из этой категории

Для некоторых различных данных, таких как изображения, видео и аудио, вы можете обратиться к:

  • skimage.io или Imageio для загрузки изображений и видео в массивы numpy
  • scipy.io.wavfile.read для чтения файлов WAV в массив numpy

Категориальные (или номинальные) функции, хранящиеся в виде строк (распространенные в pandas DataFrames), потребуют преобразования в числовые функции с помощью OneHotEncoder или OrdinalEncoder или аналогичного. См. Раздел «Предварительная обработка данных» .

Примечание: если вы управляете своими собственными числовыми данными, рекомендуется использовать оптимизированный формат файла, такой как HDF5, чтобы сократить время загрузки данных. Различные библиотеки, такие как H5Py, PyTables и pandas, предоставляют интерфейс Python для чтения и записи данных в этом формате.

Если вы хотите помочь проекту с переводом, то можно обращаться по следующему адресу support@scikit-learn.ru
© 2007 — 2020, scikit-learn developers (BSD License).

Как загрузить датасет в TensorFlow

Высокоуровневый процесс обучения в фреймворке TensorFlow консолидируется вокруг объекта класса Estimator и его наследников. Для обучения, оценки и вывода результата каждый такой объект содержит методы train , evaluate и predict соответственно. Эти методы в качестве аргумента принимают некую функцию input_fn , которая отвечает за загрузку данных для искусственной нейронной сети. В этом посте мы подробно рассмотрим как создается такая функция.

Согласно описанию, input_fn вызывается на каждом шаге процесса. Ожидается, что каждый вызов input_fn вернет либо один семпл из набора данных, либо несколько семплов, объединенных в batch. При этом для методов train и evaluate ожидается кортеж тензоров: первый тензор — входные параметры (в терминах TF: features), второй тензор — ожидаемые выходные значения (в терминах TF: labels).

Получается, что input_fn должна возвращать специфический итератор. Класс этого итератора объявлен в пакeте tf.data и называется Iterator . Чтобы получить семпл или batch нужно вызвать метод get_next . Таким образом уже можно описать конец функции:

    Поднимаясь далее вверх по коду, возникает вопрос каким образом создать объект итератора. Есть два способа: использовать статические методы класса Iterator или воспользоваться методами make_one_shot_iterator и make_initializable_iterator объектов класса Dataset и производных. Руководство программиста рекомендует использовать метод make_one_shot_iterator , так как он не требует дополнительной инициализации. Обновим функцию input_fn :
     Теперь надо создать объект класса Dataset . В модуле tf.data уже есть несколько классов для работы с конкретными форматами:
  • Класс TextLineDataset позволяет сформировать датасет, читая строки из текстовых файлов;
  • Класс FixedLengthRecordDataset позволяет сформировать датасет, читая фиксированный байтовый размер из бинарных файлов;
  • Класс TFRecordDataset позволяет сформировать датасет, читая файлы в формате TensorFlow.

Если ни один из классов не подошел, то можно воспользоваться статическими методами класса Dataset :

  • range – создает набор данных из заданной последовательности;
  • zip – объединяет два датасета в кортеж датасетов;
  • from_tensor_slice – создает датасет из слайсов тензоров;
  • from_tensors – создает единый датасет из списка тензоров;
  • list_files – создает датасет из списка файлов;
  • from_generator — создает датасет по заданному генератору.

Наиболее гибким является метод from_generator . Добавим в функцию input_fn генерацию простого датасета:

   Такая функция уже вполне жизнеспособна. Она будет возвращать по одному примеру за раз и на каждой итерации порядок семплов будет неизменным. Возвращать по одному примеру за раз не эффективно с точки зрения обработки, поэтому объект Dataset может объединить несколько семплов в batch. Чтобы это сделать нужно вызвать метод batch и в качестве параметра указать количество семплов. Метод вернет новый объект Dataset , итератор которого уже будет возвращать йелый batch. Для того, чтобы перемешать семплы объект Dataset имеет метод shuffle , в котором задается размер буфера для перемешивания.

Таким образом конечная функция будет выглядеть следующим образом:

   Ести нужно провести более сложную обработку, то можно вызвать метод map и в качестве параметра передать функцию для обработки, которая на вход получает исходный кортеж семплов и возвращает уже обработанный кортеж. Важно помнить, что семплы – это тензоры, и операции должны производиться как с тензорами. Больше примеров можно найти по ссылкам ниже.

Ссылки #

  1. tf.estimator.Estimator
  2. Importing Data
  3. tf.data.Iterator
  4. tf.data.Dataset
  5. Итерируемый объект, итератор и генератор

Как загрузить CSV файл по ссылке?

Хочу загрузить CSV файл в ipynb напрямую вот так: import pandas as pd df = pd.read_csv(‘https://www.kaggle.com/sulianova/cardiovascular-disease-dataset?select=cardio_train.csv’, sep = ‘;’) Но получаю ошибку: ParserError: Error tokenizing data. C error: Expected 1 fields in line 8, saw 2 Подскажите, пожалуйста, что мне следует исправить?

Отслеживать
задан 1 окт 2021 в 20:10
Alexander APS Alexander APS
37 7 7 бронзовых знаков
а вы пробовали просто открыть файл по этой ссылке? попробуйте — удивитесь.
1 окт 2021 в 20:17
@strawdog именно поэтому я задаю вопрос
1 окт 2021 в 20:19

Вы получаете ошибку потому что кагл не отдает вам файл csv, а отдает код страницы сайта, как я могу понять. А страницу сайта pandas прочитать как файл csv не может.

1 окт 2021 в 20:43

На той странице, которую вы пытаетесь скачать всего-лишь присутствует ссылка на другую страницу, которая действительно ведет к файлу с данными. Только вот для доступа к этим данным на странице надо авторизоваться.

1 окт 2021 в 20:44

kaggle.com/sulianova/cardiovascular-disease-dataset это ссылка на описание, а в моем вопрос как раз то, о чем вы говорите: ссылка на файл. Я на Каггле авторизован

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *