Введение в машинное обучение с использованием Python

Опубликовано: 14 Июля, 2021

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

Настройка среды

Сообщество Python разработало множество модулей, чтобы помочь программистам реализовать машинное обучение. В этой статье мы будем использовать модули numpy, scipy и scikit-learn. Мы можем установить их с помощью команды cmd:

 pip install numpy scipy scikit-learn

Лучшим вариантом будет загрузка пакетов miniconda или anaconda для python, которые поставляются вместе с этими пакетами. Следуйте приведенным здесь инструкциям, чтобы использовать анаконду.

Обзор машинного обучения

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

petal_size flower_type
1 а
2 б
1 а
2 б
3 c
4 d
3 c
2 б
5 а

Теперь мы хотим предсказать тип цветка для лепестка размером 2,5 см. Так что, если мы решим, нет. of Neighbours (K) = 3, мы видим, что 3 ближайших соседа 2.5 - это 1, 2 и 3. Их частоты равны 2, 3 и 2 соответственно. Следовательно, соседом максимальной частоты является 2, а соответствующий ему тип цветка - b. Таким образом, для лепестка размером 2,5 предсказание будет цветком типа b.

Реализация алгоритма классификации KNN с использованием Python в наборе данных IRIS

Вот скрипт на Python, который демонстрирует алгоритм классификации knn. Здесь мы используем знаменитый набор данных о цветках ириса для обучения компьютера, а затем даем компьютеру новое значение, чтобы делать прогнозы на его основе. Набор данных состоит из 50 образцов каждого из трех видов ириса (Iris setosa, Iris virginica и Iris versicolor). Для каждого образца измеряются четыре характеристики: длина и ширина чашелистиков и лепестков в сантиметрах.
Мы обучаем нашу программу, используя этот набор данных, а затем используем это обучение для предсказания вида цветка ириса с заданными размерами.

Обратите внимание, что эта программа может не работать в среде Geeksforgeeks IDE, но она может легко работать на вашем локальном интерпретаторе python при условии, что вы установили необходимые библиотеки.




# Python program to demonstrate
# KNN classification algorithm
# on IRIS dataser
from sklearn.datasets import load_iris
from sklearn.neighbors import KNeighborsClassifier
import numpy as np
from sklearn.model_selection import train_test_split
iris_dataset = load_iris()
X_train, X_test, y_train, y_test = train_test_split(iris_dataset[ "data" ], iris_dataset[ "target" ], random_state = 0 )
kn = KNeighborsClassifier(n_neighbors = 1 )
kn.fit(X_train, y_train)
x_new = np.array([[ 5 , 2.9 , 1 , 0.2 ]])
prediction = kn.predict(x_new)
print ( "Predicted target value: {} " . format (prediction))
print ( "Predicted feature name: {} " . format
(iris_dataset[ "target_names" ][prediction]))
print ( "Test score: {:.2f}" . format (kn.score(X_test, y_test)))

Выход:

 Предполагаемое название цели: [0]
Предполагаемое название функции: ['setosa']
Оценка: 0,97

Пояснение к программе:

Обучение набора данных

  • Первая строка импортирует набор данных радужки, который уже предопределен в модуле sklearn. Набор данных ириса в основном представляет собой таблицу, содержащую информацию о различных разновидностях цветков ириса.
  • Мы импортируем алгоритм kNeighborsClassifier и класс train_test_split из модулей sklearn и numpy для использования в этой программе.
  • Затем мы инкапсулируем метод load_iris () в переменную iris_dataset. Далее мы разделяем набор данных на обучающие данные и тестовые данные с помощью метода train_test_split. Префикс X в переменной обозначает значения характеристик (например, длину лепестка и т. Д.), А префикс y обозначает целевые значения (например, 0 для сетосы, 1 для вирджинии и 2 для разноцветных цветов).
  • Этот метод делит набор данных на обучающие и тестовые данные случайным образом в соотношении 75:25. Затем мы инкапсулируем метод KNeighborsClassifier в переменную kn, сохраняя значение k = 1. Этот метод содержит алгоритм K ближайшего соседа.
  • В следующей строке мы помещаем наши обучающие данные в этот алгоритм, чтобы компьютер мог обучаться с использованием этих данных. На этом обучающая часть завершена.

Тестирование набора данных

  • Теперь у нас есть размеры нового цветка в массиве numpy, называемом x_new, и мы хотим предсказать вид этого цветка. Мы делаем это с помощью метода прогнозирования, который принимает этот массив в качестве входных данных и выдает прогнозируемое целевое значение в качестве выходных данных.
  • Таким образом, прогнозируемое целевое значение оказывается равным 0, что означает сетоса. Так что у этого цветка хорошие шансы на принадлежность к виду сетоса.
  • Наконец, мы находим результат теста, который является отношением «нет». предсказаний, которые оказались верными, и сделанных прогнозов. Мы делаем это, используя метод оценки, который в основном сравнивает фактические значения набора тестов с предсказанными значениями.

Таким образом, мы увидели, как работает машинное обучение, и разработали базовую программу для его реализации с использованием модуля scikit-learn в Python.

Эта статья предоставлена tkkhhaarree . Если вам нравится GeeksforGeeks, и вы хотели бы внести свой вклад, вы также можете написать статью с помощью provide.geeksforgeeks.org или отправить ее по электронной почте на deposit@geeksforgeeks.org. Посмотрите, как ваша статья появляется на главной странице GeeksforGeeks, и помогите другим гикам.