Логистическая регрессия — это популярный алгоритм, используемый для задач бинарной классификации в контролируемом машинном обучении. Но что это значит? Ну, в бинарной классификации мы пытаемся предсказать один из двух возможных результатов или категорий. Например, мы можем захотеть предсказать, является ли электронное письмо спамом или нет, или сдаст или провалит студент экзамен.

В отличие от линейной регрессии, предсказывающей числовые значения, логистическая регрессия предсказывает вероятность события, принадлежащего к определенной категории. Это помогает нам ответить на такие вопросы, как «Какова вероятность того, что электронное письмо является спамом?» или «Какова вероятность того, что студент сдаст экзамен?»

Логистическая регрессия использует математическую функцию, называемую логистической функцией (или сигмовидной функцией), для анализа независимых переменных или факторов для определения вероятности бинарного результата, и эта логистическая функция представлена ​​​​следующими формулами:

Логит(пи) = 1/(1+ ехр(-пи))

В этом уравнении логистической регрессии logit(pi) является зависимой переменной или переменной отклика, а x является независимой переменной.

Эти независимые переменные могут быть категориальными (например, типы продуктов, цвета и т. д.) или числовыми (например, возраст, температура и т. д.). .).

Однако зависимая переменная, которую мы хотим предсказать, всегда категорична и попадает в одну из двух бинарных категорий. Рассматривая отношения и закономерности между независимыми переменными и бинарным результатом, логистическая регрессия позволяет нам оценить вероятность того, что событие произойдет или не произойдет. Эта оценка основана на логистической функции, которая сопоставляет входные данные со значением вероятности от 0 до 1.

Давайте начнем обучение модели на примере набора данных creditcard.csv.

В этой демонстрации мы обучим модель обнаруживать мошеннические кредитные карты.

  1. Понимание данных

Создайте новый блокнот в Google Colab.

Давайте начнем играть с нашим набором данных. Во-первых, мы получаем основные необходимые библиотеки.

Теперь нам нужно добавить файл .csv в Colab. И скопируйте путь к файлу

Затем мы извлекаем данные из файла .csv в фрейм данных с именем 'data_df'
(pandas.read_csv) и печатаем самые первые элементы, чтобы получить представление о наборе данных ( pandas.DataFrame.head).

Мы можем получить четкое представление о количестве столбцов и независимых/зависимых переменных во фрейме данных. Здесь, в этом случае, наш столбец «Класс» является зависимой переменной, а все остальные столбцы являются независимыми переменными.

Чтобы лучше понять данные, мы можем использовать следующие команды.
pandas.DataFrame.shape, pandas.DataFrame.columns, панды.DataFrame.describe

2. Обнаружение любых возможных отсутствующих значений

Когда мы используем набор данных для обучения модели, мы должны предоставить правильный полный набор данных. Если наш набор данных содержит значения NULL, модель не будет точной. Итак, мы должны подтвердить, что наш набор данных не содержит значений NULL.

Если присутствуют нулевые значения: вернуть TRUE
Если нет нулевых значений: вернуть False

К счастью, в этом наборе данных у нас нет нулевых значений. Но если в любом случае у вас есть нулевые значения, мы можем заменить эти нулевые значения на «np.nan», а затем удалить строки и столбцы со значением NaN.

data_df.replace('', np.nan) #replace all null values by NaN
data_df = data_df.dropna(axis=0) #drop row
data_df = data_df.dropna(axis=1) #drop column
null_columns=pd.DataFrame({'Columns':data_df.isna().sum().index,'No. Null Values':data_df.isna().sum().values,'Percentage':data_df.isna().sum().values/data_df.shape[0]})
null_columns #check each column to see if they contain any null cells
data_df.isna().any()

3. Подготовка данных для обучения модели

Теперь у нас есть полный набор данных. Мы делим этот набор данных на две части: обучающие данные и тестовые данные.
80 % набора данных — › обучающие данные
20 % набора данных — › тестовые данные
( процент может быть настроен соответственно)

Используя train_test_split, мы можем разделить назначенные переменные x и y на данные обучения и тестирования. Затем у нас есть четыре набора данных. Это x-Train,
x-Test, y-Train и y-Test
.

from sklearn.model_selection import train_test_split
x=data_df.drop(['Class'], axis = 1) #drop the dependent variable and assign all the independent variables to x
y=data_df['Class'] #assign the dependent variable to y

xtrain, xtest, ytrain, ytest = train_test_split(x, y, test_size = 0.2, random_state = 42)

Мы можем взглянуть на форму этих наборов данных.

4. Применение логистической регрессии

С помощью LogisticRegression мы назначаем модель с именем logisticreg. Затем наши обучающие данные подгоняются к этой модели, чтобы обучить модель logisticreg.

Теперь мы прогнозируем значения для наших данных x-Test. «ypredicted» — это набор данных, предсказанных нашей моделью с использованием predict(x).

5. Точность

Теперь мы должны проверить точность нашей модели с помощью accuracy_score. Для этого мы используем наш прогнозируемый набор данных и фактический набор данных, соответствующий набору данных x-Test.

Или мы можем посмотреть на матрицу путаницы нашей модели. Наша модель работает хорошо, если мы получаем матрицу путаницы как TruePositive и/или TrueNegative.

Здесь мы получаем двумерную матрицу путаницы. Потому что в нашем выводе есть 2 класса: «1» и «0».

Матрица путаницы состоит из четырех основных характеристик (чисел), которые используются для определения метрик измерения классификатора. Вот эти четыре числа:
1. TP (истинно положительный): TP представляет количество пациентов, которые были правильно классифицированы как имеющие злокачественные узлы, то есть у них есть заболевание.
2. TN (истинно отрицательный результат): TN представляет количество правильно классифицированных здоровых пациентов.
3. FP (ложноположительный результат): FP представляет количество ошибочно классифицированных пациентов с заболеванием, но на самом деле они здоровы. FP также известен как ошибка типа I.
4. FN (ложноотрицательный): FN представляет собой количество пациентов, ошибочно классифицированных как здоровые, но на самом деле страдающих от заболевания. FN также известен как ошибка типа II.

Показателями производительности алгоритма являются точность, воспроизводимость, полнота и оценка F1, которые рассчитываются на основе указанных выше TP, TN, FP и FN.

Точность алгоритма представлена ​​как отношение правильно классифицированных пациентов (TP+TN) к общему количеству пациентов (TP+TN+FP+FN).

Точность алгоритма представлена ​​как отношение правильно классифицированных пациентов с заболеванием (TP) к общему количеству пациентов с прогнозируемым заболеванием (TP). >+FP).

Теперь мы предсказали модель с точностью 99,89%, чтобы предсказать, является ли транзакция мошеннической или нет.

Полный код: Fraud_Detection.ipynb

В следующей статье мы будем обучать модель с Наивным Байесом.

Спасибо и приятного чтения!

Подпишитесь, чтобы узнать больше.