Классификация:

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

Существует два типа классификации, которые можно решить с помощью логистической регрессии:

  1. Бинарная классификация
  2. Полиномиальная классификация

Логистическая регрессия:

Это статистическая модель, которая принимает дискретные значения, а независимые переменные могут быть либо непрерывными, либо дискретными. Если переменная результата принимает два значения, то это называется моделью бинарной регрессии. Предположим, что (Y=1) является положительным числом, а (Y=0) отрицательным числом, поэтому вероятность получения или принадлежности к положительному классу P(Y=1) определяется как:

P(Y=1)(сигмовидная функция)=e^z/1+e^z, где z — линейный набор уравнений z=a+a1x1+a2x2…

Получается S-образная кривая, называемая сигмовидной функцией.

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

Сходства между логистической и линейной регрессией:

  1. Оба используют контролируемый алгоритм машинного обучения.
  2. Оба они получают линейное уравнение для прогнозирования набора данных

Разница:

  • Линейная регрессия используется для решения проблем регрессии, а логистика используется для классификации.
  • Результатом может быть любой набор значений, таких как «Возраст», «Зарплата», «Стоимость», в то время как для логистической регрессии результат варьируется только от 0 до 1.
  • В линейной регрессии мы находим наиболее подходящую линию, в то время как, с другой стороны, мы используем кривую S или сигмовидную функцию.
  • Точность измеряется с помощью RMSE, а оценка максимального правдоподобия используется для логистической регрессии.
  • Должна существовать некоторая связь между переменной результата и независимой переменной.
  • Точность логистической регрессии выше или предпочтительнее, чем у логистической регрессии.

ПРОГНОЗ ПОКУПКИ КЛИЕНТА

Шаг 1.Импортируйте все необходимые библиотеки в набор данных.

import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
%matplotlib inline
cust_filepath=(r'C:\Users\ansht\Downloads\Social_Network_Ads (1).csv')
cust_df=pd.read_csv(cust_filepath)

Шаг 2. Получите достоверную информацию о наборе данных, используя info() и descibe().

Шаг 3.Проверьте, присутствуют ли какие-либо значения Null или нет, затем суммируйте их с помощью isnull.sum()

Шаг 4. Нарисуйте тепловую карту, чтобы получить корреляцию между независимыми переменными, такими как Расчетная зарплата и Возраст.

Шаг 5. Прогнозирование количества мужчин и женщин с помощью .value_counts()

#Count the number of Male and Female
cust_df.Gender.value_counts()
Female    204
Male      196
Name: Gender, dtype: int64
#Predicting whether the customer will purchase(0) or not(1)
X_features=list(cust_df.columns)
X_features.remove('Purchased')
#Predicting that how many male and female purchased the Product based on gender
sns.countplot(x='Purchased',hue='Gender',data=cust_df)

Шаг 6. Прогнозирование расчетной заработной платы мужчин и женщин с помощью distplot

Шаг 7. Замена мужского и женского пола двоичными значениями 0 и 1 или кодирование категориальных данных с использованием фиктивных переменных и обработка отсутствующих значений.

#This is called multicollinearity and it significantly reduces the predictive power of your algorithm. To remove this, we can add the argument drop_first = True to the get_dummies method like this:
cust_df['Gender'].replace('Male',0,inplace=True)
cust_df['Gender'].replace('Female',1,inplace=True)
#As of now no missing values are being found in the dataset so no missing values
cust_df.drop(['User ID'], axis = 1, inplace = True)

Шаг 8. Погружение/разделение данных на обучение и тестирование

from sklearn.model_selection import train_test_split
x=cust_df[['Gender','Age','EstimatedSalary']]
y=cust_df['Purchased']
x_train,x_test,y_train,y_test=train_test_split(x,y,test_size=0.3)

Шаг 8. Применяется масштабирование функций, поскольку из-за расчетной зарплаты он становится несбалансированным набором данных.

#here feature scaling is necessary as we won't be able to predict the correct data as the Salary category will dominate 
from sklearn.preprocessing import StandardScaler
modelx=StandardScaler()
x_train =modelx.fit_transform(x_train) 
x_test =modelx.fit_transform(x_test)

Шаг 9. Построение модели логистической регрессии

from sklearn.linear_model import LogisticRegression
model=LogisticRegression()
model.fit(x_train,y_train)

Шаг 10. Прогнозирование точности с помощью матрицы путаницы

predictions = model.predict(x_test)
from sklearn.metrics import confusion_matrix,accuracy_score
print(confusion_matrix(y_test, predictions))
print(classification_report(y_test,predictions))
cm=confusion_matrix(y_test,predictions)
print(cm)
print(accuracy_score(y_test,predictions))

СПАСИБО :)