Show Sidebar Hide Sidebar

# Logistic Function in Scikit-learn

Shown in the plot is how the logistic regression would, in this synthetic dataset, classify values as either 0 or 1, i.e. class one or two, using the logistic curve.

#### New to Plotly?¶

You can set up Plotly to work in online or offline mode, or in jupyter notebooks.
We also have a quick-reference cheatsheet (new!) to help you get started!

### Version¶

In [1]:
import sklearn
sklearn.__version__
Out[1]:
'0.18.1'

### Imports¶

In [2]:
import plotly.plotly as py
import plotly.graph_objs as go

import numpy as np
from sklearn import linear_model

### Calculations¶

In [3]:
# this is our test set, it's just a straight line with some
# Gaussian noise
xmin, xmax = -5, 5
n_samples = 100
np.random.seed(0)
X = np.random.normal(size=n_samples)
y = (X > 0).astype(np.float)
X[X > 0] *= 4
X += .3 * np.random.normal(size=n_samples)

X = X[:, np.newaxis]
# run the classifier
clf = linear_model.LogisticRegression(C=1e5)
clf.fit(X, y)
Out[3]:
LogisticRegression(C=100000.0, class_weight=None, dual=False,
fit_intercept=True, intercept_scaling=1, max_iter=100,
multi_class='ovr', n_jobs=1, penalty='l2', random_state=None,
solver='liblinear', tol=0.0001, verbose=0, warm_start=False)

### Plot Results¶

In [4]:
p1 = go.Scatter(x=X.ravel(), y=y,
mode='markers',
marker=dict(color='black'),
showlegend=False
)
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()

p2 = go.Scatter(x=X_test, y=loss,
mode='lines',
line=dict(color='red', width=3),
name='Logistic Regression Model')

ols = linear_model.LinearRegression()
ols.fit(X, y)

p3 = go.Scatter(x=X_test, y=ols.coef_ * X_test + ols.intercept_,
mode='lines',
line=dict(color='blue', width=1),
name='Linear Regression Model'
)
p4 = go.Scatter(x=[-4, 10], y=2*[.5],
mode='lines',
line=dict(color='gray', width=1),
showlegend=False
)

layout = go.Layout(xaxis=dict(title='x', range=[-4, 10],
zeroline=False),
yaxis=dict(title='y', range=[-0.25, 1.25],
zeroline=False))

fig = go.Figure(data=[p1, p2, p3, p4], layout=layout)
In [5]:
py.iplot(fig)
Out[5]: