Задача - создать классификатор для классификации наборов данных о цветках ириса. В этом посте мы возьмем классификатор k-ближайших соседей из sklearn. Давай начнем…

Первый шаг в любом проекте машинного обучения - получить набор данных. Здесь мы попытаемся классифицировать цветок ириса. Итак, нам нужен набор данных о цветках ириса. Пакет scikit-learn.dataset содержит несколько очень полезных наборов данных для задач классификации. Здесь мы загрузим этот набор данных из пакета sklearn.datasets. Мы можем сделать это всего двумя строчками кода:

Шаг 1. Импорт и загрузка набора данных

из наборов данных импорта sklearn
iris = datasets.load_iris ()

в первой строке мы импортируем пакет наборов данных из sklearn, а во второй строке мы возвращаем набор данных iris в iris. Набор данных iris - это очень простой набор данных классификации нескольких классов, содержащий 150 образцов трех классов цветов ириса: сетоса, разноцветный и вирджинский. каждый класс имеет 50 образцов.

Любой набор данных классификации состоит из двух частей: функций и меток. Здесь каждые 150 образцов имеют 4 характеристики, а именно SepalLength, SepalWidth, PetalLength и PetalWidth (в сантиметрах). И метки 0, 1 и 2 для setosa, versicolor и virginica соответственно.

Шаг 2. Назначение характеристик и меток переменным X и y

X = iris.data
y = iris.target

на этом этапе мы загружаем данные или характеристики всех 150 выборок в переменную X, а цель или метки - в переменную y.

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

from sklearn.cross_validation import train_test_split
X_train, X_test, y_train, y_test = train_test_split (X, y, test_size = 0.5)

теперь мы разделяем набор данных на обучающую и тестовую части. Для этой задачи мы используем метод train_test_split из пакета sklearn.cross_validation. Параметр test_size означает, сколько данных мы хотим назначить для тестирования из общего набора данных. Здесь мы дали test_size = 0,5, что означает, что половина данных предназначена для тестирования, а также для обучения. X_train и y_train состоят из 75 выборок для обучения (что составляет половину из 150 выборок). X_test и y_test состоят из 75 образцов для тестирования. Это разделение выполняется методом train_test_split случайным образом.

Шаг 4. Импорт классификатора K ближайших соседей с помощью sklearn

from sklearn.neighbors import KNeighborsClassifier
my_classifier = KNeighborsClassifier ()

Теперь наступает основная часть задачи классификации - создание классификатора. Для этой задачи мы импортируем KNeighborsClassifier из пакета sklearn.neighbors. Этот класс KNeighborsClassifier имеет готовые методы для обучения (подбора) модели для классификации и тестирования (прогнозирования) на новом наборе данных.

Шаг 5. Подгонка модели к набору обучающих данных

my_classifier.fit (X_train, y_train)

используя метод подгонки, мы подбираем модель для обучающего набора данных, предоставляя X_train и y_train в качестве набора данных. На этом этапе наш классификатор my_classifier обучен и готов предсказывать тестовый набор данных.

Шаг 6. Прогнозирование модели на основе тестового набора данных

predictions = my_classifier.predict (X_test)

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

Шаг 7. Расчет точности нашей модели

из sklearn.metrics импортировать оценку_точности
print (оценка_точности (y_test, прогнозы))

Теперь последняя задача - убедиться в точности нашей модели. мы сделаем это с помощью метода precision_score из пакета sklearn.metrics. В методе precision_score мы передадим два параметра, то есть y_test и predictions. y_test - это истинные метки тестового набора данных, а прогнозы - это результат нашей модели на тестовом наборе данных.

В моем случае точность составила 97,33%. Если вы запустите один и тот же код, вы можете получить другое число из-за случайности разделения набора данных для обучения и тестирования.

Полный код:

из наборов данных импорта sklearn
iris = datasets.load_iris ()
X = iris.data
y = iris.target
из sklearn.cross_validation import train_test_split
X_train, X_test, y_train, y_test = train_test_split (X, y, test_size = 0.5)
из sklearn.neighbors import KNeighborsClassifier
my_classifier = KNeighborsClassifier ()
my_classifier.fit (X_train), y_train br /> predictions = my_classifier.predict (X_test)
из sklearn.metrics import precision_score
print (precision_score (y_test, predictions))

Теперь вы можете запустить полный код и поэкспериментировать, например, изменить параметр размера test_set и т. Д.

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

В следующем посте я объясню, как создать тот же классификатор kNN с нуля вместо того, чтобы импортировать его из scikit-learn. А потом мы сравним наши результаты с этим.

Ссылка: красивое видео Джоша Гордона от разработчиков Google.

Https://www.youtube.com/watch?v=84gqSbLcBFE&list=PLOU2XLYxmsIIuiBfYad6rFYQU_jL2ryal&index=4

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