[МУЗЫКА]
[МУЗЫКА] [МУЗЫКА]
В данном видео мы познакомимся с библиотекой Sklearn
и опробуем ее возможности на некоторых задачах.
Импортируем необходимые модули: Sklearn,
Sklearn datasets и загрузим некоторый dataset.
Этот dataset представляет собой весьма классическую задачу распознания рукописных
цифр, то есть в массиве x представлено некоторое признаковое описание цифры,
фактически это является градацией серого в 64-х тонах,
а в y записана та цифра, которую нам необходимо восстановить.
У нас есть десять цифр, и у нас есть десять различных классов.
Классическая постановка задачи классификации.
Мы можем визуализировать эти цифры,
используя встроенную функцию imshow в библиотеке matplotlib, и,
как вы видите, даже первый объект в принципе похож на цифру ноль.
Разобьем нашу выборку на обучающую и тестовую.
Воспользумся функцией train_test_split, встроенную в Sklearn.
По автомату, по дефолтным параметрам эта функция делит нашу выборку в соотношении
75 к 25, то есть 25 % у нас уходит в test, а 75 у нас уходит в train.
Перед нами поставлена классическая задача обучения с учителем.
У нас есть набор векторных признаковых описаний x, у нас есть описание y.
Давайте возьмем какую-нибудь модель, например, это будет линейный support
vector machines, линейный классификатор LinearSVC, support vector classifier,
создадим эту модель и обучим ее, вызвав функцию fit.
Как вы видите, в результате возвращается объект типа LinearSVC,
и все модели в Sklearn имеют одинаковый интерфейс.
Функциями fit модели типа estimator мы можем обучать,
а функцией predict выводить значение.
И, соответственно, мы будем замерять accuracy, мы будем замерять точность,
и поэтому воспользуемся уже встроенной в Sklearn metrics функцией accuracy score,
и посчитаем, насколько хорошо наш классификатор справился со своей задачей.
Да, действительно, 0,95 — вполне неплохо.
Следующая задача, которую мы рассмотрим — это задача кластеризации,
задача обучения без учителя.
В рамках кластеризации нам необходимо некоторому набору объектов
присвоить некоторые кластера, некоторые метки, разбить их на группы таким образом,
чтобы объекты внутри каждой группы были максимально похожи друг на друга,
а объекты из разных групп были максимально далеки друг от друга.
Естественно, понятия похожести или далекости — это математически
формализуемые вещи.
Давайте сгенерируем тестовый набор данных.
Для этого воспользуемся встроенной в Sklearn datasets функцией, make_blobs.
Вполне очевидные параметры, которые мы в нее подаем.
И давайте нарисуем наш dataset с помощью matplotlib.
Да, действительно, как вы видите, здесь вполне очевидные кластера.
И попробуем кластеризовать их с помощью KMeans —
классического алгоритма кластеризации.
В данном случае, как и ранее в Sklearn, KMeans — это объект наследник
класса estimator, то есть класс KMeans — это класс-наследник estimator'а,
и, соответственно, он обладает точно таким же интерфейсом.
Мы создаем наш объект, указываем количество кластеров,
которые мы предполагаем.
В данном случае мы можем сжульничать и мы знаем, что их три, обучаем нашу модель, и,
соответственно, просим ее дать нам ответ, сказать,
к каким кластерам по ее мнению относятся какие объекты.
И, как вы видите, KMeans смог кластеризовать, выдал какой-то результат.
Давайте посмотрим на графике, насколько это соответствует действительности.
И, да, учитывая, что у нас был достаточно простой dataset,
очевидно отделимые кластера, KMeans с легкостью справился и разделил их на три
разных кластера.