【Scikit-learn】単回帰モデルのファイル出力・保存

この記事では、Pythonと機械学習ライブラリ「scikit-learn」を用いて、単回帰分析した結果を出力(エクスポート・ダンプ)する方法について解説します。

## 単回帰分析とは

単回帰分析とは、以下のようなモデル(式)を用いて予測する手法です。

単回帰直線の式

(1)   \begin{eqnarray*} \widehat{y} = a * x + b \end{eqnarray*}

変数 説明
\widehat{y} 目的変数(予測値)
y 目的変数(観測値)
x 説明変数(目的変数と相関のある観測値)
a 相関係数(重み、回帰係数)
b 切片(定数)

相関係数(重み)は、目的変数が説明変数に対してどのくらい影響を及ぼすかを示します。

(詳細)単回帰分析とは(式と意味、相関係数、直線、決定係数、例題など)

Scikit-learnでは、「linear_model.LinearRegression()」を用いることで単回帰分析を行うことができます。
今回は、CSVファイルを読み込んで、そのデータから単回帰分析を行い、結果をファイルに出力(エクスポート)ました。
(sklearn.externals.joblibを使います)

## ソースコード

サンプルプログラムのソースコードです。

# -*- coding: utf-8 -*-
import pandas as pd
import numpy as np
from sklearn import linear_model
from sklearn.externals import joblib

def main():
    data = pd.read_csv("data.csv", sep=",")
    clf = linear_model.LinearRegression()
    # 説明変数に "x1"のデータを使用
    X = data.loc[:, ['x1']].as_matrix()
    # 目的変数に "x2"のデータを使用
    Y = data['x2'].as_matrix()
    # 予測モデルを作成(単回帰)
    clf.fit(X, Y)
    # 回帰係数と切片の抽出
    [a] = clf.coef_
    b = clf.intercept_
    # 回帰係数
    print("回帰係数:", a)
    print("切片:", b)
    print("決定係数:", clf.score(X, Y))
    joblib.dump(clf, 'clf.learn')


if __name__ == "__main__":
    main()

CSVファイル

data.csv

"x1","x2","x3"
45,17.5,30
38,17.0,25
41,18.5,20
34,18.5,30
59,16.0,45
47,19.0,35
35,19.5,25
43,16.0,35
54,18.0,35
52,19.0,40

## 実行結果

サンプルプログラムの実行結果は下記の通りです。
clf.learnというファイルに分析結果が出力されます。
single.learn
※WinPythonでは実行停止ボタンを押さないとプログラムが終了しませんでした。
(ファイルは無事に生成)

関連記事
1 Scikit-learn入門・使い方
2 Scikit-learnをインストールする方法
3 Python入門 サンプル集

コメント