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