Классификация:
Категория проблемы, в которой переменная результата принимает дискретные значения.
Существует два типа классификации, которые можно решить с помощью логистической регрессии:
- Бинарная классификация
- Полиномиальная классификация
Логистическая регрессия:
Это статистическая модель, которая принимает дискретные значения, а независимые переменные могут быть либо непрерывными, либо дискретными. Если переменная результата принимает два значения, то это называется моделью бинарной регрессии. Предположим, что (Y=1) является положительным числом, а (Y=0) отрицательным числом, поэтому вероятность получения или принадлежности к положительному классу P(Y=1) определяется как:
P(Y=1)(сигмовидная функция)=e^z/1+e^z, где z — линейный набор уравнений z=a+a1x1+a2x2…
Получается S-образная кривая, называемая сигмовидной функцией.
Работа сигмовидной функции заключается в том, что она в основном преобразует линию наилучшего соответствия, полученную в результате линейной регрессии между 0 и 1.
Сходства между логистической и линейной регрессией:
- Оба используют контролируемый алгоритм машинного обучения.
- Оба они получают линейное уравнение для прогнозирования набора данных
Разница:
- Линейная регрессия используется для решения проблем регрессии, а логистика используется для классификации.
- Результатом может быть любой набор значений, таких как «Возраст», «Зарплата», «Стоимость», в то время как для логистической регрессии результат варьируется только от 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))
СПАСИБО :)