本記事ではPythonでロジスティック回帰を行う方法を解説します。
Pythonでロジスティック回帰を行うためにはscikit-learnを使用します。
ロジスティック回帰とは
ロジスティック回帰とは二値分類や多値分類を行うための回帰分析です。
それに対して、線形回帰は連続値を予測するための回帰分析です。
線形回帰の例はある店の売り上げ予測や株価の予測などが挙げられます。
ロジスティック回帰は画像の分類やある患者への投薬が有効か否かの分類する問題などが例として挙げられます。
ロジスティック回帰の実装
事前準備
ではロジスティック回帰のコーディングに着手してゆきますが、その前にライブラリをインストールする必要があります。
下記のコマンドでscikit-learnをインストールしてください。
pip install scikit-learn
コーディング
今回はアイリスデータセットを使用します。
# ①アイリスデータセットの準備
from sklearn.datasets import load_iris
iris = load_iris()
# ②データの分割
from sklearn.model_selection import train_test_split
x_train, x_test, y_train, y_test = train_test_split(
iris.data, iris.target, test_size=0.3, random_state=3)
# ③ロジスティック回帰モデルの計算
from sklearn.linear_model import LogisticRegression
model = LogisticRegression()
model.fit(x_train, y_train)
# ④予測と精度の計算
y_pred = model.predict(x_test)
from sklearn import metrics
metrics.accuracy_score(y_test, y_pred)
- ①アイリスデータセットの準備
from sklearn.datasets import load_iris
でアイリスデータ取得関数を使用できるようにし、load_iris()
でデータを取得します。
引数にas_frame=True
を入力することでデータをDataFrame
の形で取得できます。as_frame=False
とするとデータをnumpy.array
で取得できます。
デフォルトはas_frame=False
です。特徴量は下記のとおりです。
sepal length (cm) がく片の長さ(cm) sepal width (cm) がく片の幅(cm) petal length (cm) 花びらの長さ(cm) petal width (cm) 花びらの幅(cm) 目的変数は0,1,2の三値です。0,1,2は下記の花の種類を示します。
0 セトーサ 1 ヴァーシカラー 2 ヴァージニカ - ②データの分割
ロジスティック回帰は学習と評価のステップがあり、それぞれ別のデータを使用します。
そのためにfrom sklearn.model_selection import train_test_split
でデータを分割し、train_test_split
で分割を実行します。第一引数には特徴量を第二引数には目的変数を渡します。
また、test_size
はテストデータのサイズです。
分割はランダムに行われますが、random_state
に同じ値を与えれば分割結果を固定できます。 - ③ロジスティック回帰モデルの計算
from sklearn.linear_model import LogisticRegression
でロジスティック回帰を行うクラスを使えるようにします。model = LogisticRegression()
でインスタンス化します。model.fit(x_train, y_train)
でロジスティック回帰を計算します。 - ④予測と精度の計算
y_pred = model.predict(x_test)
で予測を行います。from sklearn import metrics
で精度計算用のライブラリをインポートします。metrics.accuracy_score(y_test, y_pred)
で精度を計算します。
引数には予測結果と正解データを与える必要があります。
先程のコードを実行すると精度が出力されます。

