Bevezetés

Üdv mindenkinek! Ma a semmiből fogjuk látni a Logisztikai regressziót. A gépi tanulási technikákban a logisztikai regressziónak külön nagy jelentősége van. A logisztikai regressziót osztályozási problémák megoldására használják. A Logistic Regression osztályozási algoritmust akkor használjuk, ha a függő változó(cél) kategorikus. A logisztikus regresszió függő változója egy bináris változó, amelynek az adatok 1 (igen, boldog, igaz, normális, sikeres stb.) vagy 0 (nem, szomorú, hamis, abnormális, sikertelen stb.) kódolásúak. Ebben a blogban a logisztikai regressziót vizsgáljuk annak előrejelzésére, hogy a felhasználó vásárolhat-e autót vagy sem.

Elmélet

Ismerjük az osztályozási problémák megoldására használt logisztikus regressziós algoritmust. Az egyenes vagy hipersík illesztése helyett a logisztikus regressziós modell a logisztikus függvényt használja egy lineáris egyenlet kimenetének 0 és 1 közé szorítására. A logisztikus függvényt a következőképpen határozzuk meg:

Végrehajtás

A könyvtárak importálása

import matplotlib.pyplot as plt
import pandas as pd
from sklearn.metrics import accuracy_score
import seaborn as sns
from sklearn.metrics import confusion_matrix

Az adatkészlet importálása

dataset = pd.read_csv(‘data.csv’)
X = dataset.iloc[:, [2, 3]].values
y = dataset.iloc[:, 4].values

Az adatkészlet felosztása képzési készletre és tesztkészletre

from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.25, random_state = 10)

Funkcióskálázás
A StandardScaler ellátja a szabványosítás feladatát. Adatkészletünk változó értékeket tartalmaz, amelyek eltérő léptékűek. Mert pl. életkor 20-70 és BÉR rovatban 100000-800000-ig terjedő skálán szereplő értékekkel. Mivel ez a két oszlop eltérő léptékű, szabványosítva vannak, hogy közös léptékük legyen a gépi tanulási modell felépítése során.

from sklearn.preprocessing import StandardScaler
sc = StandardScaler()
X_train = sc.fit_transform(X_train)
X_test = sc.transform(X_test)

A logisztikai regresszió illesztése a képzési készlethez

from sklearn.linear_model import LogisticRegression
classifier = LogisticRegression(random_state = 10)
classifier.fit(X_train, y_train)

Jósítsa meg és kapja meg a tesztadatok pontosságát

y_pred = classifier.predict(X_test)
test_acc = accuracy_score(y_test, y_pred)
print(“The Accuracy for Test Set is {}”.format(test_acc*100))

A zavart mátrix készítése

cm=confusion_matrix(y_test,y_pred)
plt.figure(figsize=(12,6))
plt.title(“Confusion Matrix”)
sns.heatmap(cm, annot=True,fmt=’d’, cmap=’Blues’)
plt.ylabel(“Actual Values”)
plt.xlabel(“Predicted Values”)

Osztályozási jelentés készítése a modellhez

from sklearn.metrics import classification_report
print(classification_report(y_test,y_pred))

Előrejelzés új adatokkal

Az új bemenethez transzformációt alkalmaztunk, mert a modellünket szabványos skálázással betanítottuk. Ha a modellünket skálázás nélkül tanítjuk, akkor nem kell transzformációt használni az új bemeneti adatokban.

user_age_salary=[[20,900000]]
scaled_result = sc.transform(user_age_salary)
res=classifier.predict(scaled_result)
if res==1:
    print("He can buy the car")
else:
    print("He can't buy the car")
##Skip this part if you dont need to use this model in other file##
import dump
dump(classifier, open('model.pkl', 'wb'))
# save the scaler
dump(sc, open('scaler.pkl', 'wb'))

app.py

Ha a modelljét egy másik fájlban vagy központi telepítésben szeretné használni, kérjük, olvassa el az alábbi kódot.

from pickle import load
# load the model
model = load(open(‘model.pkl’, ‘rb’))
# load the scaler
scaler = load(open(‘scaler.pkl’, ‘rb’))
#predict user age 20 and salary 900000
user_age_salary=[[20,900000]]
scaled_result = scaler.transform(user_age_salary)
res=model.predict(scaled_result)
if res==1:
 print(“He can buy the car”)
else:
 print(“He can’t buy the car”)

"A teljes forráskódot itt találja"

Következtetés

A logisztikai regresszió a leghatékonyabb algoritmus, ha az adatok által képviselt különböző eredmények vagy különbségek lineárisan elválaszthatók. A logisztikus regresszió fő előnye, hogy sokkal könnyebben beállítható és betanítható, mint más gépi tanulási algoritmusok. A logisztikus regresszió legnegatívabb része az összetett kapcsolatok megragadása. Az erősebb és összetettebb algoritmusok, mint például a neurális hálózatok, könnyen felülmúlhatják ezt az algoritmust.

Nézd meg a többi blogomat is…







«Többszörös lineáris regresszió – Python implementáció
A többszörös lineáris regresszió olyan statisztikai technikára utal, amelyet egy változó kimenetelének előrejelzésére használnak a…medium.com webhelyen.





«Statisztikák az adattudományhoz – 1. rész
Üdvözlünk mindenkit, remélem, mindenki jól teljesít. Ebben a blogban azt fogjuk megvizsgálni, hogy miért van szükségünk statisztikákra ahhoz, hogy jó…medium.com-ot legyünk.





Kétségei vannak? Kell segítség? Vegye fel velem a kapcsolatot!

LinkedIn: https://www.linkedin.com/in/dharmaraj-d-1b707898

Github:https://github.com/DharmarajPi