Машинное обучение – это растущая область в искусственном интеллекте. Он направлен на предоставление компьютерных систем возможности изучать закономерности из данных и использовать опыт для прогнозирования без какого -либо прямого вмешательства человека.
Андрейбу Кто является опытным экспертом по машинному обучению из Германии и любит обучать других людей своим навыкам, говорит, что «машинное обучение полезно, потому что оно дает нам возможность обучать алгоритмы для автоматического принятия решений, что обычно требуется вручную и занимает много времени. “
В этой статье мы проиллюстрируем простой алгоритм машинного обучения классификации в Python3. Мы будем использовать Scikit-Learn, которая является простой, универсальной и открытой структурой машинного обучения для приложений Python.
Также мы будем использовать Набор данных радужной оболочки , который является популярным набором данных, который можно использовать для понимания концепций машинного обучения.
Понимание проблемы и данных
Набор данных цветов Iris, который включен в Scikit-Learn, состоит из набора из 150 записей. Он содержит три вида цветов – Setosa (помечен 0), Versicolor (помечен 1) и Virginica (помечен 2) – которые имеют следующие числовые атрибуты (в сантиметрах):
- Ширина лепестки
- Длина лепестка
- Ширина чапала
- Длина чашера
Целью нашего алгоритма машинного обучения будет предсказать виды цветов в соответствии с этими характеристиками. Наша модель будет обучена изучать шаблоны из набора данных на основе этих функций.
Давайте начнем испачкать руки (мы собираемся использовать распределение Anaconda Python).
Набор данных Iris поставляется с Scikit-Learn, и мы можем просто загрузить его следующим образом.
from sklearn import datasets
Давайте посмотрим, сможем ли мы получить некоторые характеристики цветов радужной оболочки из набора данных.
iris = datasets.load_iris() digits = datasets.load_digits()
Важно отметить, что набор данных-это словарь, похожий на словарь, который хранит всю информацию о данных. Эти данные хранятся в .data
ключ (список массивов).
И при обращении с подобными проблемами, подобными этой, некоторые ответы можно хранить в .target
список.
Например, аппетита на набор данных Digits, мы можем использовать Digits.data
Чтобы понять характеристики для классификации образцов цифр.
Вот код и вывод.
print(digits.data)
Также Digits.Target
Предоставляет нам больше видимости в том, что мы собираемся выучить.
print(digits.target)
Мы также можем заглянуть в данные, используя Iris.data
(Предоставление массива данных) и Iris.Target
(Предоставляя множество ярлыков).
Вы заметите, что в каждой записи есть четыре атрибута.
iris.data
iris.target
Iris.Target_Names
даст нам множество имен ярлыков; То есть три вида цветов в наборе данных.
Iris.Target_Names
Кроме того, мы также можем использовать Коробка сюжет Чтобы генерировать визуальное представление набора данных.
Он покажет нам, как наши данные разбросаны по плоскости; используя их квартили.
Вот код.
import seaborn as sns iris_data = iris.data #variable for array of the data iris_target = iris.target #variable for array of the labels sns.boxplot(data = iris_data,width=0.5,fliersize=5) sns.set(rc={'figure.figsize':(1,10)})
Вот выход.
Вот как данные представлены на горизонтальной оси.
- 0 – длина чашера (сантиметры)
- 1 – ширина чашера (сантиметры)
- 2 – длина лепестка (сантиметра)
- 3 – ширина лепестки (сантиметра)
Обучение и тестирование
Понимая детали наших данных, теперь мы можем использовать алгоритм для обучения модели прогнозирования. Таким образом, нам нужно разделить наши данные на два набора: обучение и наборы тестирования.
Обучаясь в разделе данных и выполняя тесты на другом наборе данных, с которыми модель машинного обучения никогда не взаимодействовала, она помогает нам гарантировать, что наш алгоритм может идентифицировать шаблоны в наборе данных, что повысит точность прогнозов Анкет
В этом случае мы сохраним последние 15 наборов данных для тестирования, а остальные оставим для обучения. Следовательно, мы обучим алгоритм на основе обучающего набора данных и прогнозируем на основе набора тестирования данных.
Давайте посмотрим на какой -то код, как это сделать.
import numpy as np from sklearn import tree iris_test_ids = np.random.permutation(len(iris_data)) #randomly splitting the data set #splitting and leaving last 15 entries for testing, rest for training iris_train_one = iris_data[iris_test_ids[:-15]] iris_test_one = iris_data[iris_test_ids[-15:]] iris_train_two = iris_target[iris_test_ids[:-15]] iris_test_two = iris_target[iris_test_ids[-15:]] iris_classify = tree.DecisionTreeClassifier()#using the decision tree for classification iris_classify.fit(iris_train_one, iris_train_two) #training or fitting the classifier using the training set iris_predict = iris_classify.predict(iris_test_one) #making predictions on the test dataset
Просмотр результатов
Поскольку мы разделяем набор данных случайным образом, и классификатор обучается после каждой итерации, мы можем получать разные уровни точности каждый раз, когда запускается код.
Вот код для просмотра результатов.
from sklearn.metrics import accuracy_score print(iris_predict) #lables predicted (flower species) print (iris_test_two) #actual labels print (accuracy_score(iris_predict, iris_test_two)*100) #accuracy metric
Вот выход.
Первая строка на вышеуказанном выходе дает метки данных тестирования; то есть виды цветов, основанные на прогнозах классификатора.
Вторая строка дает фактические виды, содержащиеся в наборе данных. И последняя строка дает точность %. В этом случае мы получили уровень точности 86,67%.
Не очень плохо!
Вывод
Вот код для всего проекта.
from sklearn import datasets import seaborn as sns import numpy as np from sklearn import tree from sklearn.metrics import accuracy_score iris = datasets.load_iris() digits = datasets.load_digits() print(digits.data) print(digits.target) print(iris.data) print(iris.target) print(iris.target_names) iris_data = iris.data #variable for array of the data iris_target = iris.target #variable for array of the labels sns.boxplot(data = iris_data,width=0.5,fliersize=5) sns.set(rc={'figure.figsize':(1,10)}) iris_test_ids = np.random.permutation(len(iris_data)) #randomly splitting the data set #splitting and leaving last 15 entries for testing, rest for training iris_train_one = iris_data[iris_test_ids[:-15]] iris_test_one = iris_data[iris_test_ids[-15:]] iris_train_two = iris_target[iris_test_ids[:-15]] iris_test_two = iris_target[iris_test_ids[-15:]] iris_classify = tree.DecisionTreeClassifier()#using the decision tree for classification iris_classify.fit(iris_train_one, iris_train_two) #training or fitting the classifier using the training set iris_predict = iris_classify.predict(iris_test_one) #making predictions on the test dataset print(iris_predict) #labels predicted (flower species) print (iris_test_two) #actual labels print (accuracy_score(iris_predict, iris_test_two)*100) #accuracy metric
В этом посте мы проиллюстрировали простой проект машинного обучения в Python.
Чтобы увеличить ваши знания машинного обучения, вам необходимо выполнить такие проекты.
Еще лучше, вы можете выбрать другие продвинутые проекты с такого сайта, как Liveedu и увеличить свой опыт в области машинного обучения.
Счастливое обучение машинного обучения!
Оригинал: “https://dev.to/educationecosystem/a-simple-machine-learning-project-in-python-5d11”