Лекции по линейным мето дам классификации. Вы научитесь
![]()
|
Нормализация признаков Данное задание основано на материалах лекции по линейным мето- дам классификации. Вы научитесь: • работать с персептроном — простейшим вариантом линейного клас- сификатора • повышать качество линейной модели путем нормализации призна- ков Введение Линейные алгоритмы — распространенный класс моделей, которые отли- чается своей простотой и скоростью работы. Их можно обучать за разум- ное время на очень больших объемах данных, и при этом они могут рабо- тать с любыми типами признаков — вещественными, категориальными, разреженными. В этом задании мы предлагаем вам воспользоваться пер- септроном — одним из простейших вариантов линейных моделей. Как и в случае с метрическими методами, качество линейных алго- ритмов зависит от некоторых свойств данных. В частности, признаки должны быть нормализованы, то есть иметь одинаковый масштаб. Ес- ли это не так, и масштаб одного признака сильно превосходит масштаб других, то качество может резко упасть. Один из способов нормализации заключается в стандартизации при- знаков. Для этого берется набор значений признака на всех объектах, вычисляется их среднее значение и стандартное отклонение. После это- го из всех значений признака вычитается среднее, и затем полученная разность делится на стандартное отклонение. 1 Реализация в Scikit-Learn В библиотеке scikit-learn линейные методы реализованы в пакете sklearn.linear_model. Мы будем работать с реализацией персептрона sklearn.linear_model.Perceptron. Как и у большинства моделей, обучение производится с помощью функ- ции fit, построение прогнозов — с помощью функции predict. Пример использования: import numpy a s np from s k l e a r n . l i n e a r _ m o d e l import P e r c e p t r o n X = np . a r r a y ( [ [ 1 , 2 ] , [ 3 , 4 ] , [ 5 , 6 ] ] ) y = np . a r r a y ( [ 0 , 1 , 0 ] ) c l f = P e r c e p t r o n ( ) c l f . f i t (X, y ) p r e d i c t i o n s = c l f . p r e d i c t (X) В качестве метрики качества мы будем использовать долю верных ответов (accuracy). Для ее подсчета можно воспользоваться функци- ей sklearn.metrics.accuracy_score, первым аргументом которой является вектор правильных ответов, а вторым — вектор ответов алгоритма. Для стандартизации признаков удобно воспользоваться классом sklearn.preprocessing.StandardScaler. Функция fit_transform данного клас- са находит параметры нормализации (средние и дисперсии каждого при- знака) по выборке, и сразу же делает нормализацию выборки с исполь- зованием этих параметров. Функция transform делает нормализацию на основе уже найденных параметров. Пример использования: from s k l e a r n . p r e p r o c e s s i n g import S t a n d a r d S c a l e r s c a l e r = S t a n d a r d S c a l e r ( ) X_train = np . a r r a y ( [ [ 1 0 0 . 0 , 2 . 0 ] , [ 5 0 . 0 , 4 . 0 ] , [ 7 0 . 0 , 6 . 0 ] ] ) X_test = np . a r r a y ( [ [ 9 0 . 0 , 1 ] , [ 4 0 . 0 , 3 ] , [ 6 0 . 0 , 4 ] ] ) X _ t r a i n _ s c a l e d = s c a l e r . f i t _ t r a n s f o r m ( X_train ) X_t est_s caled = s c a l e r . t r a n s f o r m ( X_test ) Инструкция по выполнению 1. Загрузите обучающую и тестовую выборки из файлов perceptron- train.csv и perceptron-test.csv. Целевая переменная записана в пер- 2 вом столбце, признаки — во втором и третьем. 2. Обучите персептрон со стандартными параметрами и random_state=241. 3. Подсчитайте качество (долю правильно классифицированных объ- ектов, accuracy) полученного классификатора на тестовой выборке. 4. Нормализуйте обучающую и тестовую выборку с помощью класса StandardScaler. 5. Обучите персептрон на новых выборках. Найдите долю правиль- ных ответов на тестовой выборке. 6. Найдите разность между качеством на тестовой выборке после нор- мализации и качеством до нее. Это число и будет ответом на зада- ние. Если ответом является нецелое число, то целую и дробную часть необходимо разграничивать точкой, например, 0.421. При необходимо- сти округляйте дробную часть до трех знаков. Ответ на каждое задание — текстовый файл, содержащий ответ в первой строчке. Обратите внимание, что отправляемые файлы не долж- ны содержать перевод строки в конце. Данный нюанс является ограни- чением платформы Coursera. Мы работаем над тем, чтобы убрать это ограничение. 3 |