Рубрики

ML | Логистическая регрессия с использованием Python

Необходимое условие: понимание логистической регрессии

База данных пользователей — этот набор данных содержит информацию о пользователях из базы данных компаний. Содержит информацию об идентификаторе пользователя, поле, возрасте, предполагаемой зарплате, приобретении. Мы используем этот набор данных для прогнозирования того, что пользователь приобретет новый продукт компании или нет.

Данные — User_Data

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

Ввод библиотек

import pandas as pd

import numpy as np

import matplotlib.pyplot as plt

Загрузка набора данных — User_Data

dataset = pd.read_csv('...\\User_Data.csv')

Теперь, чтобы предсказать, будет ли пользователь приобретать продукт или нет, нужно выяснить связь между возрастом и предполагаемой зарплатой. Здесь идентификатор пользователя и пол не являются важными факторами для выяснения этого.

# вход

x = dataset.iloc[:, [2, 3]].values

  
# выход

y = dataset.iloc[:, 4].values

Разделение набора данных для обучения и тестирования. 75% данных используется для обучения модели, а 25% — для тестирования производительности нашей модели.

from sklearn.cross_validation import train_test_split

xtrain, xtest, ytrain, ytest = train_test_split(

        x, y, test_size = 0.25, random_state = 0)

Теперь очень важно выполнить масштабирование функций здесь, потому что значения возраста и предполагаемой зарплаты находятся в разных диапазонах. Если мы не масштабируем объекты, то функция Предполагаемая заработная плата будет доминировать в функции Возраст, когда модель найдет ближайшего соседа к точке данных в пространстве данных.

from sklearn.preprocessing import StandardScaler

sc_x = StandardScaler()

xtrain = sc_x.fit_transform(xtrain) 

xtest = sc_x.transform(xtest)

  

print (xtrain[0:10, :])

Выход :

[[ 0.58164944 -0.88670699]
 [-0.60673761  1.46173768]
 [-0.01254409 -0.5677824 ]
 [-0.60673761  1.89663484]
 [ 1.37390747 -1.40858358]
 [ 1.47293972  0.99784738]
 [ 0.08648817 -0.79972756]
 [-0.01254409 -0.24885782]
 [-0.21060859 -0.5677824 ]
 [-0.21060859 -0.19087153]]

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

Наконец, мы тренируем нашу модель логистической регрессии.

from sklearn.linear_model import LogisticRegression

classifier = LogisticRegression(random_state = 0)

classifier.fit(xtrain, ytrain)

После обучения модели пришло время использовать ее для прогнозирования данных тестирования.

y_pred = classifier.predict(xtest)

Давайте проверим производительность нашей модели — Confusion Matrix

from sklearn.metrics import confusion_matrix

cm = confusion_matrix(ytest, y_pred)

  

print ("Confusion Matrix : \n", cm)

Выход :

Confusion Matrix : 
 [[65  3]
 [ 8 24]]

Из 100:
TruePostive + TrueNegative = 65 + 24
FalsePositive + FalseNegative = 3 + 8

Показатель эффективности — точность

from sklearn.metrics import accuracy_score

print ("Accuracy : ", accuracy_score(ytest, y_pred))

Выход :

Accuracy :  0.89

Визуализация производительности нашей модели.

from matplotlib.colors import ListedColormap

X_set, y_set = xtest, ytest

X1, X2 = np.meshgrid(np.arange(start = X_set[:, 0].min() - 1

                               stop = X_set[:, 0].max() + 1, step = 0.01),

                     np.arange(start = X_set[:, 1].min() - 1

                               stop = X_set[:, 1].max() + 1, step = 0.01))

  
plt.contourf(X1, X2, classifier.predict(

             np.array([X1.ravel(), X2.ravel()]).T).reshape(

             X1.shape), alpha = 0.75, cmap = ListedColormap(('red', 'green')))

  

plt.xlim(X1.min(), X1.max())

plt.ylim(X2.min(), X2.max())

  

for i, j in enumerate(np.unique(y_set)):

    plt.scatter(X_set[y_set == j, 0], X_set[y_set == j, 1],

                c = ListedColormap(('red', 'green'))(i), label = j)

      

plt.title('Classifier (Test set)')

plt.xlabel('Age')

plt.ylabel('Estimated Salary')

plt.legend()
plt.show()

Выход :

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

Рекомендуемые посты:

ML | Логистическая регрессия с использованием Python

0.00 (0%) 0 votes