ロジスティック回帰

Sklearn logistic regression, plotting probability curve graph – StackOverflow

ロジスティック回帰のグラフを求める一番簡単な方法は,回答にある通りseabornを使う.

sklearn.linear_model.LogisticRegressionの結果からグラフを描く場合には,
ロジスティック回帰モデルの求まった係数,切片からモデリングをする方法と,
モデルに放り込んで得られた推定確率値からグラフを描く方法がある.

・決定関数の係数,切片からグラフ化[2]

%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn.linear_model import LogisticRegression

sns.set_style("whitegrid")

# 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 = LogisticRegression(C=1e5)
clf.fit(X, y)

# and plot the result
plt.figure(1, figsize=(8, 6))
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)

FireShot Capture 260 - JupyterLab Alpha Preview - http___localhost_8888_lab

・推定された確率をプロットして図示

y_proba = clf.predict_proba(X)

fig = plt.figure(figsize=(8, 6))
ax = fig.add_subplot(111)
ax.scatter(X.ravel(), y, color='black', zorder=20)
ax.scatter(X.ravel(), y_proba[:, 1])

FireShot Capture 261 - JupyterLab Alpha Preview - http___localhost_8888_lab

・seabornを使う

線形回帰やロジスティック回帰等,回帰モデルをフィッティングしたい場合,
またそれをグラフ化したい場合には,seabornを使うのがリーズナブル.

fig = plt.figure(figsize=(8, 6))
ax = fig.add_subplot(111)
ax.scatter(X.ravel(), y, color='black', zorder=20)
sns.regplot(X.ravel(), y, logistic=True, ax=ax)

FireShot Capture 262 - JupyterLab Alpha Preview - http___localhost_8888_lab

ただ,seabornのregplotのロジスティック回帰は内部でstatsmodelを使っているらしいけど,扱いが難しいというか,よくオーバーフローを起こす.うまくいかない時もちょいちょいあるので,そういう時はLogisticRegressionを使えば良い.

 
 
 

参考:
sklearn.linear_model.LogisticRegression – scikitlearn

Logistic function – scikitlearn

seaborn.regplot – seaborn

広告
カテゴリー: 未分類 パーマリンク

ロジスティック回帰 への4件のフィードバック

  1. ピンバック: 分類 | 粉末@それは風のように (日記)

  2. ピンバック: 線形回帰で切片を気にする意味は無い | 粉末@それは風のように (日記)

  3. ピンバック: Sympyで線形システムを解く | 粉末@それは風のように (日記)

  4. ピンバック: Bayesian Curve Fitting | 粉末@それは風のように (日記)

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中