Sadece 0 ve 1 değerlerine sahip bir verisetine bakalım. Lojistik regresyon ve lineer regresyon modellerinin ikisi ile de bu verileri sınıflandıralım.

Programın tamamı aşağıdadır.

 

import numpy as np
import matplotlib.pyplot as plt

from sklearn import linear_model

# Bu sadece duz bir dogru, test edebilmek icin
# Gaussian gurultusu iceriyor
xmin, xmax = -5, 5

# uzerinde calisacagimiz veri sayisi
sample_number = 100

# cekirdegi sifirliyoruz
np.random.seed(0)

# uzerinde calisacagimiz verileri hazirliyoruz
# sentetik veri setimiz
X = np.random.normal(size=sample_number)
y = (X > 0).astype(np.float)
X[X > 0] *= 4
X += .3 * np.random.normal(size=sample_number)
X = X[:, np.newaxis]

# Logistik Regresyon icin siniflandiricimiz
clf = linear_model.LogisticRegression(C=1e5)
clf.fit(X, y)

plt.figure(1, figsize=(4, 3))
plt.clf()
plt.scatter(X.ravel(), y, color='black', zorder=20)
X_test = np.linspace(-5, 10, 300)

def model(x):
    return 1 / (1 + np.exp(-x))

loss = model(X_test * clf.coef_ + clf.intercept_).ravel()
plt.plot(X_test, loss, color='red', linewidth=3)
# Logistik Regresyon'u plot'a yerlestirdik.

# Lineer Regresyon icin siniflandiricimiz
ols = linear_model.LinearRegression()
ols.fit(X, y)
plt.plot(X_test, ols.coef_ * X_test + ols.intercept_, linewidth=1)
plt.axhline(.5, color='.5')

plt.ylabel('y')
plt.xlabel('X')
plt.xticks(range(-5, 10))
plt.yticks([0, 0.5, 1])
plt.ylim(-.25, 1.25)
plt.xlim(-4, 10)
plt.legend(('Logistic Regression Model', 'Linear Regression Model'),
           loc="lower right", fontsize='small')
plt.show()

 

lojistik_fonk

Referans:

http://scikit-learn.org/stable/auto_examples/linear_model/plot_logistic.html#sphx-glr-auto-examples-linear-model-plot-logistic-py