Поиск…


замечания

scikit-learn - универсальная библиотека с открытым исходным кодом для анализа данных, написанная на python. Он основан на других библиотеках python: NumPy, SciPy и matplotlib

scikit-learn содержит ряд реализаций для разных популярных алгоритмов машинного обучения.

Установка scikit-learn

Текущая стабильная версия scikit-learn требует :

  • Python (> = 2.6 или> = 3.3),
  • NumPy (> = 1,6,1),
  • SciPy (> = 0,9).

Для большинства pip установки python менеджер пакетов может установить python и все его зависимости:

pip install scikit-learn

Однако для Linux-систем рекомендуется использовать диспетчер пакетов conda , чтобы избежать возможных процессов сборки

conda install scikit-learn

Чтобы проверить, что у вас есть scikit-learn , выполните в оболочке:

python -c 'import sklearn; print(sklearn.__version__)'

Установка Windows и Mac OSX:

Canopy и Anaconda поставляют новую версию scikit-learn в дополнение к большому набору научной библиотеки python для Windows, Mac OSX (также актуальной для Linux).

Обучить классификатор с перекрестной проверкой

Использование набора диафрагмы:

import sklearn.datasets
iris_dataset = sklearn.datasets.load_iris()
X, y = iris_dataset['data'], iris_dataset['target']

Данные разделяются на поезда и тестовые наборы. Для этого мы используем train_test_split утилиты train_test_split для разделения как X и y (данных и целевых векторов) случайным образом с опцией train_size=0.75 (учебные наборы содержат 75% данных).

Учебные наборы данных подаются в классификатор k-ближайших соседей . Метод fit классификатора будет соответствовать модели данным.

from sklearn.cross_validation import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, train_size=0.75) 
from sklearn.neighbors import KNeighborsClassifier
clf = KNeighborsClassifier(n_neighbors=3)
clf.fit(X_train, y_train)

Наконец, предсказание качества тестового образца:

clf.score(X_test, y_test) # Output: 0.94736842105263153

Используя одну пару поездов и тестовых наборов, мы можем получить предвзятую оценку качества классификатора из-за произвольного выбора разделения данных. Используя кросс-валидацию, мы можем поместить классификатор на разные поезда / тестовые подмножества данных и составить среднее значение по всем результатам точности. Функция cross_val_score классификатор входным данным с использованием кросс-валидации. Он может принимать в качестве входного количества различных разделов (сгибов), которые будут использоваться (5 в приведенном ниже примере).

from sklearn.cross_validation import cross_val_score
scores = cross_val_score(clf, X, y, cv=5)
print(scores)
# Output: array([ 0.96666667,  0.96666667,  0.93333333,  0.96666667,  1.        ])
print "Accuracy: %0.2f (+/- %0.2f)" % (scores.mean(), scores.std() / 2)
# Output: Accuracy: 0.97 (+/- 0.03)

Создание трубопроводов

Поиск шаблонов в данных часто происходит в цепочке шагов обработки данных, например, при выборе, нормализации и классификации. В sklearn для этого используется трубопровод этапов.

Например, следующий код показывает конвейер, состоящий из двух этапов. Первый масштабирует функции, а второй обучает классификатор в полученном расширенном наборе данных:

from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.neighbors import KNeighborsClassifier

pipeline = make_pipeline(StandardScaler(), KNeighborsClassifier(n_neighbors=4))

После создания конвейера вы можете использовать его как обычный этап (в зависимости от его конкретных шагов). Здесь, например, конвейер ведет себя как классификатор. Следовательно, мы можем использовать его следующим образом:

# fitting a classifier
pipeline.fit(X_train, y_train)
# getting predictions for the new data sample
pipeline.predict_proba(X_test)

Интерфейсы и условные обозначения:

Различные операции с данными выполняются с использованием специальных классов.

Большинство классов относятся к одной из следующих групп:

  • алгоритмы классификации (полученные из sklearn.base.ClassifierMixin ) для решения задач классификации
  • регрессионные алгоритмы (полученные от sklearn.base.RegressorMixin ) для решения проблемы восстановления непрерывных переменных (проблема регрессии)
  • преобразование данных (полученное из sklearn.base.TransformerMixin ), которое препроцессор данных

Данные хранятся в numpy.array s (но другие pandas.DataFrame объекты, такие как pandas.DataFrame s, принимаются, если они конвертируются в numpy.array s)

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

import numpy
data = numpy.arange(10).reshape(5, 2)
print(data)

Output:
[[0 1]
 [2 3]
 [4 5]
 [6 7]
 [8 9]]

В sklearn выше наборе данных sklearn содержит 5 объектов, каждый из которых описывается двумя функциями.

Примеры наборов данных

Для удобства тестирования sklearn предоставляет некоторые встроенные наборы данных в модуле sklearn.datasets . Например, давайте загрузим набор данных диафрагмы Fisher:

import sklearn.datasets
iris_dataset = sklearn.datasets.load_iris()
iris_dataset.keys()
['target_names', 'data', 'target', 'DESCR', 'feature_names']

Вы можете прочитать полное описание, имена функций и имена классов ( target_names ). Они хранятся в виде строк.

Нам интересны данные и классы, которые хранятся в data и target полях. По соглашению они обозначаются как X и y

X, y = iris_dataset['data'], iris_dataset['target']
X.shape, y.shape
((150, 4), (150,))
numpy.unique(y)
array([0, 1, 2])

Формы X и y говорят, что есть 150 образцов с четырьмя функциями. Каждый образец относится к одному из следующих классов: 0, 1 или 2.

Теперь X и y можно использовать для обучения классификатора, вызывая метод fit() классификатора.


Вот полный список наборов данных, предоставляемых модулем sklearn.datasets с их размером и предполагаемым использованием:

Загрузите Описание Размер использование
load_boston() Набор данных о ценах на жилье в Бостоне 506 регрессия
load_breast_cancer() Рак молочной железы Висконсин 569 классификация (двоичная)
load_diabetes() Набор данных диабета 442 регрессия
load_digits(n_class) Цифры данных 1797 классификация
load_iris() Набор данных Iris 150 классификация (многоклассовый)
load_linnerud() Набор данных Linnerud 20 многомерная регрессия

Обратите внимание, что (источник: http://scikit-learn.org/stable/datasets/) :

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

В дополнение к этим встроенным наборам данных для образцов игрушек, sklearn.datasets также предоставляет служебные функции для загрузки внешних наборов данных:

  • load_mlcomp для загрузки примерных наборов данных из репозитория mlcomp.org (обратите внимание, что наборы данных необходимо загрузить до этого). Вот пример использования.
  • fetch_lfw_pairs и fetch_lfw_people для загрузки набора данных с маркированными лицами в Wild (LFW) из http://vis-www.cs.umass.edu/lfw/ , которые используются для проверки лица (соответственно распознавания лиц). Этот набор данных больше 200 МБ. Вот пример использования.


Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow