Добро пожаловать в учебник по логистической регрессии в MATLAB с использованием набора данных из собственного хранилища наборов данных MATLAB. Логистическая регрессия — это фундаментальный и широко используемый алгоритм классификации в машинном обучении. Это особенно полезно при работе с задачами бинарной классификации, где цель состоит в том, чтобы предсказать вероятность принадлежности экземпляра к определенному классу.
В этом руководстве мы шаг за шагом проведем вас через процесс реализации логистической регрессии в MATLAB. Мы будем использовать один из наборов данных, доступных в собственном хранилище наборов данных MATLAB, чтобы продемонстрировать практическое применение логистической регрессии.
В учебном пособии будут рассмотрены основные задачи, такие как загрузка набора данных, предварительная обработка данных, разделение их на наборы для обучения и тестирования, обучение модели логистической регрессии, прогнозирование и оценка производительности модели. Попутно вы получите четкое представление о том, как работает логистическая регрессия и как интерпретировать ее результаты.
К концу этого руководства у вас будет четкое представление о том, как использовать мощные функции MATLAB для применения логистической регрессии к реальным наборам данных и анализа производительности модели.
Итак, давайте погрузимся и изучим мир логистической регрессии в MATLAB, что позволит вам уверенно решать задачи классификации!
Шаг 1: Загрузите набор данных
Откройте MATLAB и перейдите к Командному окну MATLAB.
Чтобы загрузить набор данных из репозитория MATLAB, используйте функцию load
, за которой следует имя набора данных. Например, давайте загрузим набор данных Fisher's Iris:
load fisheriris
Набор данных будет загружен в рабочую область как структурная переменная.
Шаг 2: Предварительно обработайте набор данных
Извлеките объекты и метки из загруженного набора данных:
X = meas; % Features (measurements) y = strcmp(species,'versicolor'); % Labels: 1 for 'versicolor', 0 for others
Хорошей практикой является нормализация функций, чтобы иметь нулевое среднее значение и единичную дисперсию. Это можно сделать с помощью функции zscore
:
X = zscore(X);
Шаг 3: Разделите набор данных
Разделите набор данных на наборы для обучения и тестирования, чтобы оценить производительность модели логистической регрессии. Вы можете использовать функцию cvpartition
для создания объекта раздела для перекрестной проверки:
cv = cvpartition(y, 'Holdout', 0.2); % 80% for training, 20% for testing X_train = X(cv.training,:); y_train = y(cv.training,:); X_test = X(cv.test,:); y_test = y(cv.test,:);
Шаг 4. Обучите модель логистической регрессии
Чтобы обучить модель логистической регрессии, используйте функцию fitglm
:
model = fitglm(X_train, y_train, 'Distribution', 'binomial');
Параметр 'Distribution'
имеет значение 'binomial'
для логистической регрессии.
Шаг 5: Делайте прогнозы
Используйте обученную модель, чтобы делать прогнозы на тестовом наборе:
y_pred = predict(model, X_test);
Шаг 6: интерпретируйте результаты
- Интерпретируйте результаты на основе полученных показателей оценки. Например, вы можете проанализировать точность, матрицу путаницы, точность, полноту и оценку F1, чтобы понять, насколько хорошо работает модель.
- Вы можете вычислить дополнительные показатели оценки, используя такие функции, как
accuracy_score
,precision_score
,recall_score
иf1_score
из MATLAB Statistics and Machine Learning Toolbox. - Проанализируйте матрицу путаницы, чтобы увидеть распределение истинно положительных, истинно отрицательных, ложноположительных и ложноотрицательных результатов.
Вот код для интерпретации результатов.
% Convert predicted labels to logical data type y_pred = logical(y_pred); % Compute evaluation metrics accuracy = sum(y_pred == y_test) / numel(y_test); confusion_matrix = confusionmat(y_test, y_pred); precision = confusion_matrix(2,2) / sum(confusion_matrix(:,2)); recall = confusion_matrix(2,2) / sum(confusion_matrix(2,:)); f1_score = 2 * (precision * recall) / (precision + recall); % Display the evaluation metrics fprintf('Accuracy: %.2f%%\n', accuracy * 100); fprintf('Precision: %.2f\n', precision); fprintf('Recall: %.2f\n', recall); fprintf('F1 Score: %.2f\n', f1_score); % Display the confusion matrix fprintf('Confusion Matrix:\n'); disp(confusion_matrix);
Давайте рассмотрим код шаг за шагом:
y_pred = logical(y_pred);
: Эта строка преобразует предсказанные метки (y_pred
) в логический тип данных. Функцияlogical
преобразует элементыy_pred
в логические значения (true
илиfalse
). Это преобразование необходимо, поскольку функцияconfusionmat
требует, чтобы предсказанные метки и истинные метки имели один и тот же тип данных.accuracy = sum(y_pred == y_test) / numel(y_test);
: Эта строка вычисляет точность модели логистической регрессии. Он сравнивает предсказанные метки (y_pred
) с истинными метками (y_test
) поэлементно, используя оператор==
. Результирующий логический массив указывает, где предсказанные метки соответствуют истинным меткам. Функцияsum
подсчитывает количество значенийtrue
в логическом массиве, что соответствует количеству правильных предсказаний. Наконец, количество правильных прогнозов делится на общее количество выборок (numel(y_test)
) для получения точности.confusion_matrix = confusionmat(y_test, y_pred);
: Эта строка вычисляет матрицу путаницы с помощью функцииconfusionmat
. Матрица путаницы представляет собой табличное представление, которое показывает количество истинно положительных, ложноположительных, истинно отрицательных и ложноотрицательных прогнозов. Он принимает истинные метки (y_test
) и предсказанные метки (y_pred
) в качестве входных данных.precision = confusion_matrix(2,2) / sum(confusion_matrix(:,2));
: Эта строка вычисляет точность модели логистической регрессии. Точность — это отношение истинных срабатываний к сумме истинных срабатываний и ложных срабатываний. Здесьconfusion_matrix(2,2)
представляет количество истинных срабатываний, аsum(confusion_matrix(:,2))
представляет сумму истинных срабатываний и ложных срабатываний.recall = confusion_matrix(2,2) / sum(confusion_matrix(2,:));
: Эта строка вычисляет полноту (также известную как чувствительность или доля истинных положительных результатов) модели логистической регрессии. Отзыв — это отношение истинных положительных результатов к сумме истинных положительных и ложных отрицательных результатов. Здесьconfusion_matrix(2,2)
представляет количество истинных положительных результатов, аsum(confusion_matrix(2,:))
представляет собой сумму истинных положительных и ложных отрицательных результатов.f1_score = 2 * (precision * recall) / (precision + recall);
: Эта строка вычисляет оценку F1, которая представляет собой гармоническое среднее значение точности и полноты. Оценка F1 обеспечивает сбалансированную меру производительности модели, учитывая как точность, так и полноту. Он вычисляется с использованием значений точности и полноты, полученных ранее.- В следующих
fprintf
строках отображаются показатели оценки: точность, точность, полнота и оценка F1. Спецификатор%f
используется для форматирования чисел с плавающей запятой с двумя десятичными знаками. Знак%
используется для обозначения того, что значение следует умножить на 100, чтобы представить его в процентах. fprintf('Confusion Matrix:\n');
: В этой строке отображается заголовок матрицы путаницы.disp(confusion_matrix);
: В этой строке отображается матрица путаницы с использованием функцииdisp
. Матрица путаницы печатается в виде табличного представления количества истинно положительных, ложноположительных, истинно отрицательных и ложноотрицательных результатов.
Выполняя этот код, вы можете получить и интерпретировать метрики оценки и матрицу путаницы для вашей модели логистической регрессии.
Шаг 7. Уточните и оптимизируйте модель (необязательно)
1. Если производительность модели логистической регрессии неудовлетворительна, вы можете поэкспериментировать с различными стратегиями, чтобы улучшить ее. Некоторые методы включают в себя:
- Разработка функций: создавайте новые функции или преобразуйте существующие функции, чтобы получить больше информации.
- Регуляризация: отрегулируйте параметр регуляризации, чтобы предотвратить переоснащение или недообучение.
- Настройка гиперпараметров: оптимизируйте гиперпараметры, такие как скорость обучения, максимальное число итераций или сила регуляризации, для повышения производительности.
- Попробуйте разные алгоритмы классификации: если логистическая регрессия не работает, вы можете изучить другие алгоритмы, такие как машины опорных векторов, случайные леса или нейронные сети.
2. Повторите шаги 4–6 с уточненной моделью и снова оцените ее производительность.
Не стесняйтесь настраивать приведенный выше код или добавлять дополнительные показатели оценки в соответствии с вашими конкретными требованиями.
Заключение
Поздравляем! Вы успешно завершили обучение по логистической регрессии в MATLAB, используя набор данных из собственного хранилища наборов данных MATLAB. В этом руководстве вы получили ценную информацию о реализации и оценке моделей логистической регрессии в MATLAB.
Мы начали с загрузки набора данных из репозитория MATLAB и предварительной обработки данных, чтобы убедиться, что они готовы к моделированию. Затем мы разделяем набор данных на наборы для обучения и тестирования, что позволяет нам точно оценить производительность модели. С помощью обученной модели логистической регрессии мы сделали прогнозы для тестового набора и оценили его производительность, используя такие показатели, как точность, воспроизводимость и оценка F1.
Благодаря интерпретации показателей оценки и матрицы путаницы вы научились оценивать эффективность модели логистической регрессии и получили ценную информацию о ее сильных и слабых сторонах. Помните, что эти показатели оценки могут помочь вам в уточнении и оптимизации модели для достижения лучших результатов, если это необходимо.
Вооружившись этими знаниями, теперь вы можете уверенно применять логистическую регрессию к различным задачам классификации с помощью MATLAB. Кроме того, вы получили прочную основу для дальнейшего изучения и экспериментирования с различными алгоритмами и методами машинного обучения для расширения ваших возможностей анализа данных.
Мы надеемся, что это руководство дало вам всестороннее представление о логистической регрессии в MATLAB и ее практической реализации с использованием наборов данных реального мира. Теперь вы можете уверенно использовать этот мощный метод для решения задач классификации и принимать обоснованные решения на основе прогнозов вашей модели.
Удачного кодирования и изучения обширных возможностей логистической регрессии в MATLAB!
Связанные руководства по регрессиям с использованием MATLAB
Вот несколько связанных руководств по различным регрессионным анализам с использованием MATLAB:
Связанные руководства по логистической регрессии с использованием Python
Если вам интересно узнать о некоторых приложениях логистической регрессии с использованием Python, вы можете прочитать следующие учебные пособия:
Повышение уровня кодирования
Спасибо, что являетесь частью нашего сообщества! Перед тем, как ты уйдешь:
- 👏 Хлопайте за историю и подписывайтесь на автора 👉
- 📰 Смотрите больше контента в публикации Level Up Coding
- 💰 Бесплатный курс собеседования по программированию ⇒ Просмотреть курс
- 🔔 Подписывайтесь на нас: Twitter | ЛинкедИн | "Новостная рассылка"
🚀👉 Присоединяйтесь к коллективу талантов Level Up и найдите прекрасную работу