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

Я работаю на python + tensorflow
Да ну, врёшь.

Andrey Dugin @adugin Куратор тега Python
Есть гугл, там миллиард примеров. На том же Kaggle есть сотни выложенных примеров кода с готовыми решениями. Если вам лень потратить своё время, чтобы разобраться — заплатите за решение задачи на фрилансе.
Решения вопроса 0
Ответы на вопрос 2
Да ну! Работаешь на Python и не можешь файл загрузить.
Бросай ты это дело: рукописные буквы, нейросеть, tensorflow всякие.
Нельзя учить атомную физику не выучив таблицу умножения. Или спорить будешь? Так почему ты решил, что сможешь работать с нейросетями не научившись элементарно программировать? А то боюсь, следующим вопросом будет «как цикл написать».
Да, и по ходу подтяни свои навыки поиска в Гуугл. Очень пригодится.
Ответ написан более трёх лет назад
Комментировать
Нравится 1 Комментировать
Загрузить csv можно с помощью pandas, функция read_csv
Ответ написан более трёх лет назад
Комментировать
Нравится 1 Комментировать
Ваш ответ на вопрос
Войдите, чтобы написать ответ

- 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 и в качестве параметра передать функцию для обработки, которая на вход получает исходный кортеж семплов и возвращает уже обработанный кортеж. Важно помнить, что семплы – это тензоры, и операции должны производиться как с тензорами. Больше примеров можно найти по ссылкам ниже.
Ссылки #
- tf.estimator.Estimator
- Importing Data
- tf.data.Iterator
- tf.data.Dataset
- Итерируемый объект, итератор и генератор
Как загрузить 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 это ссылка на описание, а в моем вопрос как раз то, о чем вы говорите: ссылка на файл. Я на Каггле авторизован