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!