Готовые наборы данных

Готовые данные сами по себе представляют ценность, особенно если они включают много параметров и связаны с насущной проблемой человечества.

Часто в биологии целью крупных хорошо финансируемых проектов является не получение новых знаний или результатов, а получение данных. Например, проекты «Геном человека». Такие проекты заканчиваются созданием базы данных, обычно с открытым доступом. Предполагается, что множество ученых, которые получат доступ к новым данным, придумают как из них извлечь пользу.

Наборы данных в свободном доступе:

  • уже обработаны

  • результаты опубликованы

Типовые наборы данных

  • становятся эталоном для сравнения разных алгоритмов анализа

Много готовых наборов данных можно найти на сервисах Kaggle Datasets, UCI Machine Learning Repository. В программные модули популярного у статистиков языка R включены множество ставших классическими наборов.

Ирисы Фишера

Знаменитый набор данных Рональда Фишера (составленный из данных от ботаника Эдгара Андерсона) содержит измерения 4-х переменных: длины и ширины лепестков цветов трех видов ириса (по 50 измерений на каждый вид):

  • Iris setosa

  • Iris versicolor

  • Iris virginica

На этом наборе часто демонстрируют применение методов многомерного анализа и классификации.

Названия переменных даются по-английски:

термин

перевод

Sepal

наружный лепесток околоцветника

Petal

внутренний лепесток околоцветника

Length

длина

Width

ширина

Первоисточники:

  • Anderson, Edgar (1935). The irises of the Gaspe Peninsula, Bulletin of the American Iris Society, 59, 2–5.

  • Fisher, R. A. (1936) The use of multiple measurements in taxonomic problems. Annals of Eugenics, 7, Part II, 179–188.

Примечание

Обратите внимание, что довоенный журнал назывался «Анналы евгеники». В этом журнале известные статистики вроде Карла Пирсона публиковали работы по сравнению еврейских и нееврейских детей. Когда, после победы над фашизмом, взгляд на евгенику изменился, в 1954 году журнал был переименован в Анналы генетики человека.

Загрузка из пакета scikit-learn

Популярный пакет инструментов для машинного обучения включает этот набор.

Поскольку набор данных используется для демонстрации предсказания вида по измерениям лепестков, то измерения находятся в поле „data“, а виды - в поле „target“ (цель).

#http://scikit-learn.org/stable/auto_examples/datasets/plot_iris_dataset.html
from sklearn import datasets
iris = datasets.load_iris()
iris.keys()
dict_keys(['data', 'target', 'frame', 'target_names', 'DESCR', 'feature_names', 'filename'])
D = pd.DataFrame(data= hstack([iris['data'], atleast_2d(iris['target_names'][iris['target']]).T]), 
                 columns= iris['feature_names']+['species'])
D.tail()
sepal length (cm) sepal width (cm) petal length (cm) petal width (cm) species
145 6.7 3.0 5.2 2.3 virginica
146 6.3 2.5 5.0 1.9 virginica
147 6.5 3.0 5.2 2.0 virginica
148 6.2 3.4 5.4 2.3 virginica
149 5.9 3.0 5.1 1.8 virginica

Загрузка из пакета seaborn

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

import seaborn as sns
D = sns.load_dataset('iris')
D.tail()
sepal_length sepal_width petal_length petal_width species
145 6.7 3.0 5.2 2.3 virginica
146 6.3 2.5 5.0 1.9 virginica
147 6.5 3.0 5.2 2.0 virginica
148 6.2 3.4 5.4 2.3 virginica
149 5.9 3.0 5.1 1.8 virginica

Загрузка из Интернет

В интернете готовый набор данных выложен во многих местах, например на UCI Machine Learning Repository

# обратите внимание, что строчка записана из двух частей - они автоматически соединяются в одну строку
D = pd.read_csv('https://github.com/pandas-dev/pandas/raw/master'
              '/pandas/tests/io/data/csv/iris.csv')
D.tail()
SepalLength SepalWidth PetalLength PetalWidth Name
145 6.7 3.0 5.2 2.3 Iris-virginica
146 6.3 2.5 5.0 1.9 Iris-virginica
147 6.5 3.0 5.2 2.0 Iris-virginica
148 6.2 3.4 5.4 2.3 Iris-virginica
149 5.9 3.0 5.1 1.8 Iris-virginica

Загрузка из файлов

Ссылка со страницы https://www.kaggle.com/uciml/iris/kernels Можно скачать архив и распаковать вручную. Файлы в архиве:

  • Iris.csv

  • database.sqlite

Далее предполагаем, что эти файлы в текущей папке.

Текстовый файл

#'https://www.kaggle.com/uciml/iris/download'
D = pd.read_csv('d/Iris.csv')
D.tail()
Id SepalLengthCm SepalWidthCm PetalLengthCm PetalWidthCm Species
145 146 6.7 3.0 5.2 2.3 Iris-virginica
146 147 6.3 2.5 5.0 1.9 Iris-virginica
147 148 6.5 3.0 5.2 2.0 Iris-virginica
148 149 6.2 3.4 5.4 2.3 Iris-virginica
149 150 5.9 3.0 5.1 1.8 Iris-virginica

Файл базы данных

Второй файл - база данных в формате SQLite

# создаем соединение к базе данных.
import sqlite3
conn = sqlite3.connect('d/database.sqlite')  # указываем путь к файлу
conn
<sqlite3.Connection at 0x200bee2c3f0>
#Прочитать список таблиц можно таким запросом
pd.read_sql("SELECT name FROM sqlite_master WHERE type='table';", conn) # запрос к главной таблице
name
0 Iris
name = 'Iris'
q = 'SELECT * FROM {}'.format(name)  # ВЫБРАТЬ {все колонки} ИЗ {имя базы}
D = pd.read_sql(q, conn)
D.tail()
Id SepalLengthCm SepalWidthCm PetalLengthCm PetalWidthCm Species
145 146 6.7 3.0 5.2 2.3 Iris-virginica
146 147 6.3 2.5 5.0 1.9 Iris-virginica
147 148 6.5 3.0 5.2 2.0 Iris-virginica
148 149 6.2 3.4 5.4 2.3 Iris-virginica
149 150 5.9 3.0 5.1 1.8 Iris-virginica

* * *

Один и тот же набор данных мы смогли загрузить из разных источников. Названия колонок и метки немного различаются, но числовые данные одинаковые.