Введение в машинное обучение на Python

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

Введение в машинное обучение

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

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

Машинное обучение включает в себя различные этапы:

  1. сбор данных
  2. фильтрация данных
  3. анализ данных
  4. обучение алгоритму
  5. тестирования алгоритма с использованием алгоритма для прогнозирования будущего

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

  • контролируемое обучение
  • неконтролируемое обучение

Контролируемое обучение

Контролируемое обучение - это наука о том, как обучить компьютер распознавать элементы путем предоставления ему выборочных данных. Затем компьютер извлекает из этого уроки и может прогнозировать будущие наборы данных на основе полученных данных.

Например, вы можете обучить компьютер отфильтровывать спам-сообщения на основе прошлой информации.

Контролируемое обучение используется во многих приложениях, например в Facebook, для поиска изображений по определенному описанию. Теперь вы можете искать изображения на Facebook по словам, описывающим содержание фотографии. Поскольку на сайте социальной сети уже есть база данных изображений с подписями, он может выполнять поиск и сопоставлять описание с характеристиками фотографий с некоторой степенью точности.

В контролируемом обучении есть только два этапа:

  • тренировка
  • тестирование

Некоторые из контролируемых алгоритмов обучения включают:

  • деревья принятия решений
  • машины опорных векторов
  • наивные байесовские
  • k-ближайший сосед
  • линейная регрессия

Машинное обучение с помощью библиотеки Sklearn

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

Sklearn также хорошо взаимодействует с библиотеками NumPy и SciPy.

Установка Sklearn

Руководство по установке Sklearn предлагает очень простой способ установки i t для нескольких платформ. Это требует нескольких зависимостей:

  • Python (>= 3. 6)
  • NumPy (минимальная версия 1. 17. 3)
  • SciPy (минимальная версия 1. 3. 2)

Если у вас уже есть эти зависимости, вы можете установить Sklearn так же просто, как:

pip install -U scikit-learn

Более простой способ - просто установить Anaconda. Это позаботится обо всех зависимостях, так что вам не придется беспокоиться об установке их по одной. Чтобы проверить, правильно ли работает Sklearn, просто импортируйте его из интерпретатора Python следующим образом:

[GCC 7.5.0] :: Anaconda, Inc. on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import sklearn
>>> 
 Python 3.9.12 (main, Apr  5 2022, 06:56:58) 

Если ошибка не возникает, значит, все в порядке. Теперь, когда мы закончили с установкой, давайте вернемся к нашей проблеме. Мы хотим иметь возможность различать разных животных. Итак, мы разработаем алгоритм, который сможет точно определить, является ли данное животное лошадью или курицей.

Сначала нам нужно собрать некоторые выборочные данные по каждому виду животных. Некоторые выборочные данные приведены в таблице ниже.

Выборочные данные, которые мы получили, дают некоторые общие черты двух животных и данные от двух из них. Чем больше выборочных данных, тем более точными и менее предвзятыми будут результаты.

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

Сначала импортируйте модуль дерева из Sklearn.

from sklearn import tree

Определите признаки, которые вы хотите использовать для классификации животных.

features = [[7, 0.6, 40], [7, 0.6, 41], [37, 600, 37], [37, 600, 38]]

Определите выходные данные для каждого объявления r даст. Курица будет представлена значением 0, в то время как лошадь будет представлена значением 1.

#labels = [chicken, chicken, horse, horse]
# we use 0 to represent a chicken and 1 to represent a horse
labels = [0, 0, 1, 1]

Затем мы определяем классификатор, который будет основан на дереве решений.

classifier = tree.DecisionTreeClassifier()

Вводите или подгоняйте свои данные к классификатору.

classifier.fit(features, labels)

Полный код алгоритма приведен ниже.

from sklearn import tree
features = [[7, 0.6, 40], [7, 0.6, 41], [37, 600, 37], [37, 600, 38]]
#labels = [chicken, chicken, horse, horse] 
labels = [0, 0, 1, 1]
classif = tree.DecisionTreeClassifier()
classif.fit(features, labels)

Теперь мы можем предсказать заданный набор данных. Вот как предсказать животное ростом 7 дюймов, весом 0,6 кг и температурой 41:

from sklearn import tree
features = [[7, 0.6, 40], [7, 0.6, 41], [37, 600, 37], [37, 600, 38]]   
#labels = [chicken, chicken, horse, horse] 
labels = [0, 0, 1, 1]
classif = tree.DecisionTreeClassifier()
classif.fit(features, labels)
print(classif.predict([[7, 0.6, 41]]))

Вот как предсказать животное ростом 38 дюймов, весом 600 кг и температурой 37,5:

from sklearn import tree
features = [[7, 0.6, 40], [7, 0.6, 41], [37, 600, 37], [37, 600, 38]]
 #labels = [chicken, chicken, horse, horse] 
 labels = [0, 0, 1, 1]
 classif = tree.DecisionTreeClassifier()
 classif.fit(features, labels)
 print(classif.predict([[38, 600, 37.5]]))
 # output 
# [1] or a Horse

Как вы можете видеть выше, вы обучили алгоритм запоминать все особенности и названия животных, и знание этих данных используется для тестирования новых животных.

Линейная регрессия на больших наборах данных

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

Согласно Википедии: В статистике линейная регрессия - это линейный подход к моделированию взаимосвязи между скалярным откликом и одной или несколькими объясняющими переменными (также известными как зависимые и независимые переменные).

Загрузите csv-файл в свой рабочий каталог

Давайте начнем с импорта необходимых зависимостей.

import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
from sklearn.linear_model import LinearRegression

Затем загрузите данные csv в фрейм данных pandas.

df = pd.read_csv('gdp.csv')

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

print(df.head())
print(df.describe())

Вот результат:

year           GDP
count  11507.000000  1.150700e+04
 mean    1991.265230  1.005972e+12
 std       15.886648  4.533056e+12
 min     1960.000000  8.824448e+06
 25%     1978.000000  2.056874e+09
 50%     1993.000000  1.436880e+10
 75%     2005.000000  1.796394e+11
 max     2016.000000  7.904923e+13
     country Code  year           GDP
 0  Arab World  ARB  1968  2.576068e+10
 1  Arab World  ARB  1969  2.843420e+10
 2  Arab World  ARB  1970  3.138550e+10
 3  Arab World  ARB  1971  3.642691e+10   
 4  Arab World  ARB  1972  4.331606e+10

Как вы можете видеть выше, данные содержат ВВП разных стран за период с 1960 по 2016 год. Следующим шагом является создание x- и y-мерных массивов.

y = df['GDP'].values.reshape(-1, 1)
X = df['year'].values.reshape(-1, 1)

Затем создайте регрессионную модель и прогноз, используя X (год) в качестве входных данных.

model = LinearRegression()
model.fit(X, y)
predictions = model.predict(X) 

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

plt.scatter(X, y) 
plt.plot(X, predictions, color='red') 
plt.show()

Неконтролируемое обучение

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

Обучение без присмотра можно далее подразделить на:

  • Объединение в кластеры
  • Кластеризация

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

Ассоциация - это то, где вы определяете правила, описывающие большие наборы данных. Этот тип обучения может быть применим при сопоставлении книг по автору или категории, будь то мотивационные, художественные или другие. r образовывать ональные книги. Некоторые из популярных алгоритмов обучения без присмотра включают: k-означает кластеризацию иерархическую кластеризацию.

Вывод

Мы надеемся, что это руководство помогло вам начать работу с машинным обучением. Это всего лишь введение — машинному обучению предстоит многое охватить, и это лишь малая часть того, что может сделать машинное обучение. Sklearn - это всего лишь одна из библиотек, используемых в машинном обучении. Другие библиотеки включают tensorflow и keras. 

Кроме того, не стесняйтесь посмотреть, что у нас есть в наличии для продажи и изучения на Envato Market. Ваше решение использовать контролируемый или неконтролируемый алгоритм машинного обучения будет зависеть от различных факторов, таких как структура и размер данных. Машинное обучение может применяться практически во всех сферах нашей жизни, например, для предотвращения мошенничества, персонализации новостных лент на сайтах социальных сетей в соответствии с предпочтениями пользователей, фильтрации электронной почты и вредоносных программ, прогнозирования погоды и даже в секторе электронной коммерции для прогнозирования покупательских привычек потребителей. .