Задача - создать классификатор для классификации наборов данных о цветках ириса. В этом посте мы возьмем классификатор 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