scikit-learn ロジスティック回帰

ロジスティック回帰とは、ベルヌーイ分布に従う変数の統計的回帰モデルの1つです。回帰という名前がついていますが、分類問題を解くためのモデルなので注意しましょう。

ロジスティック回帰ではシグモイド関数を使用して、確率値を算出し0, 1の分類を行います。

目次

LogisticRegressionの使い方

【LogisticRegression()の引数】

  • penalty:ペナルティ関数の設定(l1:L1正則化、l2:L2正則化)
  • C:正則化の影響度の設定
  • random_state:乱数
  • solver: 最適化のアルゴリズム(‘newton-cg’, ‘lbfgs’, ‘liblinear’, ‘sag’, ‘saga’}
  • max_iter: 収束計算の最大試行回数
  • n_jobs: 計算に使うジョブの数

また、作成したインスタンスへの基本的なメソッドは以下となります。【sklearn.linear_model.LogisticRegressionクラスのメソッド】

  • fit(X, y[, sample_weight]):学習の実行
  • get_params([deep]):学習の際に用いたパラメータの取得
  • predict(X): 予測の実行
  • predict_proba(X): 予測の実行(確率値)
  • score(X, y[, sample_weight]): 決定係数の算出
  • set_params(**params): パラメータの設定

2値分類

ライブラリのインポート

import pandas as pd
from sklearn.datasets import load_breast_cancer
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score, f1_score

データセットの準備

breast_cancer_df = load_breast_cancer(as_frame=True).frame
X = breast_cancer_df.drop("target", axis=1).values
y = breast_cancer_df["target"].values
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.3)

モデルの構築と学習

model = LogisticRegression(
    penalty="l2",
    dual=False,
    tol=1e-4,
    C=1.0,
    fit_intercept=True,
    intercept_scaling=1,
    class_weight=None,
    random_state=42,
    solver="lbfgs",
    max_iter=100,
    multi_class="auto",
    verbose=0,
    warm_start=False,
    n_jobs=4,
    l1_ratio=None,
)
model.fit(X_train, y_train)
y_train_pred = model.predict(X_train)
y_test_pred = model.predict(X_test)

評価

print("accuracy train data: ", accuracy_score(y_train, y_train_pred))
print("accuracy train data: ", accuracy_score(y_test, y_test_pred))

print("f1 train data: ", f1_score(y_train, y_train_pred))
print("f1 test data: ", f1_score(y_test, y_test_pred))

多値分類

ライブラリのインポート

import pandas as pd
from sklearn.datasets import load_wine
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score

データセットの準備

wine_df = load_wine(as_frame=True).frame
X = wine_df.drop("target", axis=1).values
y = wine_df["target"].values
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.3)

モデルの構築と学習

model = LogisticRegression(
    penalty="l2",
    dual=False,
    tol=1e-4,
    C=1.0,
    fit_intercept=True,
    intercept_scaling=1,
    class_weight=None,
    random_state=42,
    solver="lbfgs",
    max_iter=100,
    multi_class="auto",
    verbose=0,
    warm_start=False,
    n_jobs=4,
    l1_ratio=None,
)
model.fit(X_train, y_train)
y_train_pred = model.predict(X_train)
y_test_pred = model.predict(X_test)

評価

print("accuracy train data: ", accuracy_score(y_train, y_train_pred))
print("accuracy test data: ", accuracy_score(y_test, y_test_pred))

print("f1 train data: ", f1_score(y_train, y_train_pred, average="micro"))
print("f1 test data: ", f1_score(y_test, y_test_pred, average="micro"))

まとめ

本記事では、scikit-learnを用いて線形回帰モデルを構築する手順を解説しました。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次