Рубрики
Без рубрики

Что такое Scikit Surve – руководство для начинающих к популярной машине, обучающей библиотеке Python

Эта статья изначально была опубликована в Scikit Enternal Tutorial Scikit-Learn – один из самых … Теги с Python, программированием, машиной, начинающим.

Эта статья была первоначально опубликована в учебном пособии Scikit

SCIKIT-SULL – один из наиболее широко используемых пакетов Python для науки о данных и машинном обучении. Это позволяет вам выполнять много операций и обеспечивает различные алгоритмы. Scikit-Suart также предлагает отличную документацию о своих классах, методах и функциях, а также объяснения на фоне используемых алгоритмов.

Scikit-Learn поддерживает:

  • Предварительная обработка данных,
  • Уменьшение размеров,
  • Выбор модели,
  • регрессия,
  • классификация,
  • Кластерный анализ.

Он также предоставляет несколько наборов данных, которые вы можете использовать для проверки ваших моделей.

Scikit – Suart не реализует все, связанное с машинным обучением. Например, он не имеет полной поддержки:

  • нейронные сети,
  • самоорганизующие карты (сети Кохонена),
  • Правило ассоциации обучение,
  • Учебное обучение и так далее.

Scikit-Surve построен на Numpy и Scipy, поэтому вам нужно понимать, по крайней мере, основы этих двух библиотек, чтобы эффективно применить его.

Scikit-Surve – это пакет с открытым исходным кодом. Как и большинство вещей из экосистемы Python, это свободно даже для коммерческого использования. Он лицензирован в соответствии с лицензией BSD.

Эта статья направлена на кратко представление о некоторых возможностях Scikit-Nearn, не получая слишком много деталей.

Предварительная обработка данных

Вы можете использовать Scikit – научиться готовить данные для алгоритмов машинного обучения: стандартизировать или нормализовать данные, кодировать категорические переменные и многое другое.

Давайте сначала определим Numpy Array для работы с:

>>> import numpy as np
>>> x = np.array([[0.1, 1.0, 22.8],
...               [0.5, 5.0, 41.2],
...               [1.2, 12.0, 2.8],
...               [0.8, 8.0, 14.0]])
>>> x
array([[ 0.1,  1. , 22.8],
       [ 0.5,  5. , 41.2],
       [ 1.2, 12. ,  2.8],
       [ 0.8,  8. , 14. ]])

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

>>> from sklearn.preprocessing import StandardScaler
>>> scaler = StandardScaler()
>>> scaled_x = scaler.fit_transform(x)
>>> scaler.scale_
array([ 0.40311289,  4.03112887, 14.04421589])
>>> scaler.mean_
array([ 0.65,  6.5 , 20.2 ])
>>> scaler.var_
array([1.6250e-01, 1.6250e+01, 1.9724e+02])
>>> scaled_x
array([[-1.36438208, -1.36438208,  0.18512959],
       [-0.3721042 , -0.3721042 ,  1.4952775 ],
       [ 1.36438208,  1.36438208, -1.23894421],
       [ 0.3721042 ,  0.3721042 , -0.44146288]])
>>> scaled_x.mean().round(decimals=4)
0.0
>>> scaled_x.mean(axis=0)
array([ 1.66533454e-16, -1.38777878e-17,  1.52655666e-16])
>>> scaled_x.std(axis=0)
array([1., 1., 1.])
>>> scaler.inverse_transform(scaled_x)
array([[ 0.1,  1. , 22.8],
       [ 0.5,  5. , 41.2],
       [ 1.2, 12. ,  2.8],
       [ 0.8,  8. , 14. ]])

Иногда у вас будут некоторые категорические данные и должны преобразовать его в значимые числа. Один из способов сделать это с использованием класса Sklearn.PreProcessing. Одинhotencoder. Рассмотрим следующий пример с массивами ролей в компании:

>>> from sklearn.preprocessing import OneHotEncoder
>>> roles = np.array([('Tom', 'manager'),
...                   ('Mary', 'developer'),
...                   ('Ann', 'recruiter'),
...                   ('Jim', 'developer')])
>>> roles
array([['Tom', 'manager'],
       ['Mary', 'developer'],
       ['Ann', 'recruiter'],
       ['Jim', 'developer']], dtype='>> encoder = OneHotEncoder()
>>> encoded_roles = encoder.fit_transform(roles[:, [1]])
>>> encoded_roles.toarray()
array([[0., 1., 0.],
       [1., 0., 0.],
       [0., 0., 1.],
       [1., 0., 0.]])

В приведенном выше примере первый столбец eCoded_roles incoded_roles указывает, является ли каждый сотрудник разработчиком. Второй и четвертый сотрудник (Мэри и Джим). Второй столбец связан с положением менеджера. Только первый сотрудник (TOM) имеет эту должность. Наконец, третий столбец соответствует рекрутеру, а третий сотрудник (ANN) является тем.

Сокращение размерности

Сокращение размерности включает в себя выделение или извлечение наиболее важных компонентов (особенности) многомерного набора данных. Scikit-Learn предлагает несколько подходов к снижению размерности. Одним из них является основной компонентный анализ или PCA.

Выбор модели

При моделях обучения и тестировании машин обучающих модели необходимо случайно разделить наборы данных в наборы тренировки и тесты. Это включает в себя как входы, так и их соответствующие выходы. Функция sklearn.model_selection.train_test_split () полезна в таких случаях:

>>> import numpy as np
>>> from sklearn.model_selection import train_test_split
>>> x, y = np.arange(1, 21).reshape(-1, 2), np.arange(3, 40, 4)
>>> x
array([[ 1,  2],
       [ 3,  4],
       [ 5,  6],
       [ 7,  8],
       [ 9, 10],
       [11, 12],
       [13, 14],
       [15, 16],
       [17, 18],
       [19, 20]])
>>> y
array([ 3,  7, 11, 15, 19, 23, 27, 31, 35, 39])
>>> x_train, x_test, y_train, y_test =\
...     train_test_split(x, y, test_size=0.4, random_state=0)
>>> x_train
array([[ 3,  4],
       [13, 14],
       [15, 16],
       [ 7,  8],
       [ 1,  2],
       [11, 12]])
>>> y_train
array([ 7, 27, 31, 15,  3, 23])
>>> x_test
array([[ 5,  6],
       [17, 18],
       [ 9, 10],
       [19, 20]])
>>> y_test
array([11, 35, 19, 39])

В дополнение к выполнению обычных расщеплений набора данных Scikit-Suart предоставляет средства для реализации кросс-проверки, настроить гипер-параметры ваших моделей с помощью поиска сетки, рассчитайте много величин, которые показывают производительность модели (например, коэффициент определения , средняя ошибка в квадрате, объяснила оценку дисперсии, путаница матрицы, классификационный отчет, F-меры и многое другое).

Наборы данных

Scikit – Учитесь предоставляет несколько наборов данных, подходящих для обучения и тестирования ваших моделей. Это в основном известные наборы данных. Они достаточно большие, чтобы обеспечить достаточный объем данных для моделей тестирования, но также достаточно маленький, чтобы обеспечить приемлемую продолжительность тренировки.

Например, функция sklearn.datasets.load_boston () возвращает данные о ценах на дому в Бостонской области (цены не обновляются!). Существует 506 наблюдений, а входная матрица имеет 13 столбцов (функций):

>>> from sklearn.datasets import load_boston
>>> x, y = load_boston(return_X_y=True)
>>> x.shape, y.shape
((506, 13), (506,))

Этот набор данных подходит для многоразового регрессии.

Другой пример – это набор данных, связанный с вином. Может быть получено с функцией Sklearn.datasets.load_wine ():

>>> from sklearn.datasets import load_wine
>>> x, y = load_wine(return_X_y=True)
>>> x.shape, y.shape
((178, 13), (178,))
>>> np.unique(y)
array([0, 1, 2])

Этот набор данных подходит для классификации. Он содержит 13 функций, связанных с тремя различными винодельческими культиваторами из Италии. Есть 178 наблюдений.

Регрессия

Scikit-Suart имеет поддержку различных методов регрессии, начинающихся с линейной регрессии и ближайшими соседями, посредством полиномиальной регрессии, поддерживают векторные регрессии, деревья решений и т. Д. Для ансамблевых методов, таких как случайное лес и градиентное усиление. Он также поддерживает нейронные сети, но не почти в той же степени, что и специализированные библиотеки, такие как Tensorflow.

Мы покажем случайную регрессию леса здесь.

Мы обычно начинаем наше регрессионное путешествие, импортируя пакеты, классы и функции, которые нам нужны:

>>> import numpy as np
>>> from sklearn.datasets import load_boston
>>> from sklearn.ensemble import RandomForestRegressor
>>> from sklearn.model_selection import train_test_split

Следующим шагом является получение данных для работы и разделить набор в подсюдах обучения и испытания. Мы будем использовать набор данных Бостона в этой статье:

>>> x, y = load_boston(return_X_y=True)
>>> x_train, x_test, y_train, y_test =\
...     train_test_split(x, y, test_size=0.33, random_state=0)

Некоторые методы требуют от масштаба (стандартизировать) ваши данные, в то время как с другими, это необязательно. Мы продолжим без масштабирования на этот раз.

Теперь нам нужно создать наш регресс и соответствовать (поезда) его с подмножеством данных, выбранных для обучения:

>>> regressor = RandomForestRegressor(n_estimators=10, random_state=0)
>>> regressor.fit(x_train, y_train)
RandomForestRegressor(bootstrap=True, criterion='mse', max_depth=None,
                      max_features='auto', max_leaf_nodes=None,
                      min_impurity_decrease=0.0, min_impurity_split=None,
                      min_samples_leaf=1, min_samples_split=2,
                      min_weight_fraction_leaf=0.0, n_estimators=10,
                      n_jobs=None, oob_score=False, random_state=0, verbose=0,
                      warm_start=False)

После того, как модель обучается, мы проверяем его оценку (коэффициент определения) на наборе тренировок, а что более важно на тестовом наборе, то есть с данными, не используемыми для установки модели:

>>> regressor.score(x_train, y_train)
0.9680930547240916
>>> regressor.score(x_test, y_test)
0.8219576562705848

Достаточно хорошая модель может быть использована для прогнозирования выходов с некоторыми новыми входными данными X_NEW, используя метод .pedict (): Regressor.predict (x_new).

Классификация

Scikit-Learn выполняет классификацию в очень похожее, как это с регрессией. Он поддерживает различные классификационные методы, такие как логистические регрессионные и K-ближайшие соседи, поддерживают векторные машины, наивные байесы, деревья решений, а также методы ансамбля, такие как случайный лес, адабуст и градиентное усиление.

Эта статья иллюстрирует, как использовать случайный метод леса для классификации. Подход очень похож, как в случае регрессии. Однако теперь мы используем винный набор данных, определите классификатор и оцените его с точностью классификации вместо коэффициента определения:

>>> import numpy as np
>>> from sklearn.datasets import load_wine
>>> from sklearn.ensemble import RandomForestClassifier
>>> from sklearn.model_selection import train_test_split
>>> x, y = load_wine(return_X_y=True)
>>> x_train, x_test, y_train, y_test =\
...     train_test_split(x, y, test_size=0.33, random_state=0)
>>> classifier = RandomForestClassifier(n_estimators=10, random_state=0)
>>> classifier.fit(x_train, y_train)
RandomForestClassifier(bootstrap=True, class_weight=None, criterion='gini',
                       max_depth=None, max_features='auto', max_leaf_nodes=None,
                       min_impurity_decrease=0.0, min_impurity_split=None,
                       min_samples_leaf=1, min_samples_split=2,
                       min_weight_fraction_leaf=0.0, n_estimators=10,
                       n_jobs=None, oob_score=False, random_state=0, verbose=0,
                       warm_start=False)
>>> classifier.score(x_train, y_train)
1.0
>>> classifier.score(x_test, y_test)
1.0

Достаточно хорошая модель может быть использована для прогнозирования выходов с новыми входными данными с использованием метода .pedict (): Regressor.predict (x_new).

Анализ кластера

Кластеризация – это ветвь безоснованного обучения, широко поддерживаемого в Scikit – учиться. В дополнение к K-означает кластеризацию, он позволяет применить размножение с аффинностью, спектральная кластеризация, агломеративная кластеризация и т. Д.

Мы покажем K-означает кластеризацию в этой статье. При внедрении его, будьте осторожны, имеет ли смысл стандартизировать или нормализовать ваши данные, и особенно меру расстояния подходит (в большинстве случаев, это, вероятно, евклидовое расстояние).

Опять же, мы начинаем с импорта и получения данных. На этот раз мы получим Numpy и Sklearn.Cluster. Kmeans:

Достаточно хорошая модель может быть использована для прогнозирования выходов с некоторыми новыми входными данными X_NEW, используя метод .pedict (): Regressor.predict (x_new).

Классификация

Scikit-Learn выполняет классификацию в очень похожее, как это с регрессией. Он поддерживает различные классификационные методы, такие как логистические регрессионные и K-ближайшие соседи, поддерживают векторные машины, наивные байесы, деревья решений, а также методы ансамбля, такие как случайный лес, адабуст и градиентное усиление.

Эта статья иллюстрирует, как использовать случайный метод леса для классификации. Подход очень похож, как в случае регрессии. Однако теперь мы используем винный набор данных, определите классификатор и оцените его с точностью классификации вместо коэффициента определения:

>>> import numpy as np
>>> from sklearn.cluster import KMeans
>>> x = np.array([(0.0, 0.0),
...               (9.9, 8.1),
...               (-1.0, 1.0),
...               (7.1, 5.6),
...               (-5.0, -5.5),
...               (8.0, 9.8),
...               (0.5, 0.5)])
>>> x
array([[ 0. ,  0. ],
       [ 9.9,  8.1],
       [-1. ,  1. ],
       [ 7.1,  5.6],
       [-5. , -5.5],
       [ 8. ,  9.8],
       [ 0.5,  0.5]])

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

>>> cluster_analyzer = KMeans(n_clusters=3, init='k-means++')
>>> cluster_analyzer.fit()
>>> cluster_analyzer.fit(x)
KMeans(algorithm='auto', copy_x=True, init='k-means++', max_iter=300,
       n_clusters=3, n_init=10, n_jobs=None, precompute_distances='auto',
       random_state=None, tol=0.0001, verbose=0)

Теперь мы готовы получить такие результаты, как координаты центров кластеров и этикетки кластеров, принадлежат каждое наблюдение:

>>> cluster_analyzer.cluster_centers_
array([[ 8.33333333,  7.83333333],
       [-0.16666667,  0.5       ],
       [-5.        , -5.5       ]])
>>> cluster_analyzer.labels_
array([1, 0, 1, 0, 2, 0, 1], dtype=int32)

Вы можете использовать метод .pedict () Чтобы получить ближайшие кластеры для новых наблюдений.

Выводы

В этой статье показаны самые основы Scikit-Suart, очень популярных научно-технических наук и машинного обучения Python Package. Это один из важных библиотек Python для этих целей.

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

Спасибо за чтение!

Оригинал: “https://dev.to/duomly/what-is-scikit-learn-a-beginner-guide-to-popular-machine-learning-python-library-1f06”