Независимо от того, являетесь ли вы новичком в мире заработка M ахина L или у вас есть кое-какие ноу-хау, эта статья поможет вам изучить практическую сторону программирования в ML. Обычно машинное обучение бывает следующих типов:

  1. Контролируемое обучение
  2. Неконтролируемое обучение
  3. Обучение с подкреплением

В этой статье мы сосредоточимся только на «контролируемом обучении», поскольку это часто является отправной точкой в ​​машинном обучении. Обычно контролируемое обучение - это математический и статистический подход для сопоставления определенного количества входных данных с соответствующими выходными данными на основе предоставленных примеров данных, которые также известны как обучающий набор данных. Набор данных всегда помечается при работе с алгоритмами обучения с учителем. Мы будем реализовывать классификацию и логистическую регрессию (которые являются методами контролируемого обучения) в Python с использованием библиотеки машинного обучения под названием «Scikit Learn». Если вы хотите узнать больше о типах машинного обучения, я предлагаю вам прочитать эту статью:



Предварительные требования:
Единственными предварительными требованиями являются следующие установки:
1. Версия Python (3x), используемая в этом руководстве, - 3.7.1
2. Любой хороший текст редактор, например Vs-Code или Jupyter-Notebook
3. Необязательно - среда Anaconda или python virtual-env

Установка:
Единственная установка, которая нам действительно нужна, - это «Scikit Learn». Откройте командную строку в Windows или терминал в Ubuntu или Mac, выполните следующую команду:

pip install -U scikit-learn

или если вы используете анаконду, тогда:

conda install -c intel scikit-learn

Очень хороший! Теперь мы готовы приступить к написанию кода.

Кодирование:

Код состоит из 5 шагов:

Шаг 1. Импортируйте Sklearn и набор данных из примеров Sklearn:

import sklearn
from sklearn.datasets import load_breast_cancer

Мы используем набор данных о раке груди, который встроен в библиотеку sklearn. Подробности этого набора данных можно найти здесь.

Шаг 2. Загрузка набора данных и извлечение компонентов, ярлыков, названий компонентов и названий ярлыков:

data = load_breast_cancer()
label_names = data['target_names']
labels = data['target']
feature_names = data['feature_names']
features = data['data']

На этом этапе мы загрузили набор данных в переменную с именем «data», а затем извлекли фактические данные (строки), имена столбцов и имена выходных данных или меток классов. В этом наборе данных названия ярлыков злокачественный и доброкачественный, которые будут представлены как 1 и 0 соответственно.

Шаг 3. Добавление набора данных в наборы для обучения и тестирования:

from sklearn.model_selection import train_test_split

train, test, train_labels, test_labels = train_test_split(features,
                                                          labels,
                                                          test_size=0.33,
                                                          random_state=42)

Сначала мы импортировали функцию под названием train_test_split, это встроенная функция, которая поставляется с библиотекой sklearn, она разбивает фактический набор данных на наборы для обучения и тестирования, чтобы мы могли чтобы проверить точность нашей окончательной обученной модели. Этот фрагмент кода фактически разделяет 66,66% для обучающего набора и 33,33% для тестового набора. Об этом распределении можно предупредить, изменив параметр test_size. Эта функция также принимает в качестве параметров функции и метки, которые мы извлекли на шаге 2. Наконец, random_state просто определяет, что мы хотим, чтобы разбиение было случайным с коэффициентом 42 (это также можно изменить)

Шаг 4. Создание наивного байесовского (NB) классификатора и обучение:

from sklearn.naive_bayes import GaussianNB
GNB = GaussianNB()
model = GNB.fit(train, train_labels)

Наивный байесовский классификатор очень хорош с бинарной классификацией и является одним из самых простых в изучении, более подробную информацию об этом алгоритме можно найти здесь. Этот алгоритм доступен в sklearn под названием GaussianNB. Мы инициализировали объект с именем GNB с помощью GaussianNB. После инициализации объекта мы обучаем его на нашем обучающем наборе. Это делается путем вызова метода .fit () для объекта GNB, аргументы, которые он принимает, - это обучающие данные и обучающие метки, которые мы извлекли на шаге 3.

Шаг 5. Получение прогнозов на основе модели и расчет ее точности:

preds = GNB.predict(test)
print(preds)

Метод. pred () используется для прогнозирования выходной переменной или переменной класса в тестовом наборе. Аргументом, который ему нужен, является набор для тестирования, который мы получили на шаге 3. Переменная preds содержит результат прогноза для обучающего набора, следует отметить, что выходные данные должны быть в 1 и 0 ( злокачественный и доброкачественный). Результат печати preds будет примерно таким:

[1 0 0 1 1 0 0 0 1 1 1 0 1 0 1 0 1 1 1 0 1 1 0 1 1 1 1 1 1 0 1 1 1 1 1 1 0
 1 0 1 1 0 1 1 1 1 1 1 1 1 0 0 1 1 1 1 1 0 0 1 1 0 0 1 1 1 0 0 1 1 0 0 1 0
 1 1 1 1 1 1 0 1 1 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 1 0 0 1 0 0 1 1 1 0 1 1 0
 1 1 0 0 0 1 1 1 0 0 1 1 0 1 0 0 1 1 0 0 0 1 1 1 0 1 1 0 0 1 0 1 1 0 1 0 0
 1 1 1 1 1 1 1 0 0 1 1 1 1 1 1 1 1 1 1 1 1 0 0 1 1 0 1 1 0 1 1 1 1 1 1 0 0
 0 1 1]

Пришло время проверить точность или оценку этой модели:

from sklearn.metrics import accuracy_score
score_GNB = accuracy_score(test_labels, preds)
print(score_GNB)

Импортируем еще один встроенный метод из библиотеки sklearn. Метод precision_score сравнивает предсказанные метки с метками исходного обучающего набора. Поэтому естественно, что аргументами, которые ему нужны, являются метки набора тестов и предсказанные метки. Результат, который я получил от этой модели:

0.9414893617021277

Итак, у нас точность 94%, что очень хорошо, и с помощью этих 5 шагов вы только что реализовали классификатор машинного обучения. Следующие шаги являются необязательными, и если кто-то хочет обучить модель логистической регрессии, следует читать вперед, и если вы уже довольны своей работой, вы можете пропустить следующие шаги.

Шаг 6. (Необязательно) Создание модели логистической регрессии и ее обучение:

from sklearn.linear_model import LogisticRegression
log_reg = LogisticRegression(solver='lbfgs', max_iter=20000)

log_model = log_reg.fit(train, train_labels)

Это очень похоже на то, что мы сделали выше с классификатором GNB. Инициализация LogisticRegression () требует нескольких аргументов для правильной работы, иначе вы можете получить предупреждения. Для простоты просто проигнорируйте тот факт, что мы дали ему 2 параметра. У нас будет отдельная подробная статья о логистической регрессии и ее теории.

Шаг 7. (Необязательно) Получение прогнозов на основе логистической регрессии и точности:

log_preds = log_model.predict(test)
print(accuracy_score(test_labels, log_preds))

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

0.9680851063829787

Фактически у нас ок. Точность 97% для этой модели. Это показывает улучшение по сравнению с нашими предыдущими результатами. Всегда предпочтительно использовать разные типы моделей, чтобы мы могли создать наиболее точную модель для использования или экспериментов.

Большое спасибо за чтение этой статьи, любезно дайте свой отзыв, и я надеюсь, что вы кое-что узнали здесь.

Вспомогательный материал:

Https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html
https://scikit-learn.org/stable/install.html
Https://www.digitalocean.com/community/tutorials/how-to-build-a-machine-learning-classifier-in-python-with-scikit-learn