Готовые наборы данных
Содержание
Готовые наборы данных¶
Готовые данные сами по себе представляют ценность, особенно если они включают много параметров и связаны с насущной проблемой человечества.
Часто в биологии целью крупных хорошо финансируемых проектов является не получение новых знаний или результатов, а получение данных. Например, проекты «Геном человека». Такие проекты заканчиваются созданием базы данных, обычно с открытым доступом. Предполагается, что множество ученых, которые получат доступ к новым данным, придумают как из них извлечь пользу.
Наборы данных в свободном доступе:
уже обработаны
результаты опубликованы
Типовые наборы данных
становятся эталоном для сравнения разных алгоритмов анализа
Много готовых наборов данных можно найти на сервисах 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 |
* * *¶
Один и тот же набор данных мы смогли загрузить из разных источников. Названия колонок и метки немного различаются, но числовые данные одинаковые.