【Scikit-learn】CSVデータの重回帰分析

Pythonと機械学習ライブラリ「scikit-learn」を用いて、重回帰分析を行う方法について解説します。

【重回帰分析とは】Scikit-learnで実装

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

(1)   \begin{eqnarray*} y = a_1x_1 + a_2x_2 + a_3x_3+ .... +a_nx_n \end{eqnarray*}

変数 説明
y 目的変数(予測したい値)
x_1, x_2, x_3 ... x_n 説明変数(予測に利用するデータ)
a_1, a_2, a_3 .. .a_n 回帰係数(相関係数)

例えば、「景気動向指数」「若者の平均年収」から「ガチャの売上」を予測しようと考えたとき、「目的変数=ガチャの売上」「説明変数=景気動向指数、若者の平均年収」となります。

書式

機械学習ライブラリ「scikit-learn」では、sklearn.linear_model.LinearRegressionクラスで重回帰分析を行うことが出来ます。
その使い方は以下の通りです。

sklearn.linear_model.LinearRegression(fit_intercept=True, normalize=False, copy_X=True, n_jobs=1)
引数 内容
fit_interceptz Trueで切片を求めます。目的変数が原点を必ず通るデータを用いる場合はFalseにします。
normalize Trueで説明変数を事前に正規化します。
copy_X Trueでメモリ内でデータを複製してから実行します。
n_jobs CPUで計算する際のジョブの数です。(-1ですべてのジョブを使用)

その他メソッド

「sklearn.linear_model.LinearRegression」クラスの各メソッドの使い方は次の通りです。

メソッド 内容
fit(x, y[, sample_weight]) 説明変数x、目的変数yとして線形回帰モデルを求めます。
get_params([deep]) 推定に用いたパラメータを取得します。
predict(x) 生成した線形回帰モデルとデータxを用いて予測します。
score(X, y[, sample_weight]) 決定係数を求めます。
set_params(**params) パラメータを設定します。
coef_ 偏回帰係数を取得します。
intercept_ 切片の値を取得します。
参考文献 公式ドキュメント(英語)

【サンプルコード】CSVファイルを読み込んで重回帰分析

CSVファイルを読み込んで、そのデータから重回帰分析を行い、結果(モデル)をファイルに出力(エクスポート)します。


読み込むデータ

data.csv


今回はdata.csvのx_1, x_2を説明変数、x_3を目的変数として重回帰分析を行いました。
その結果、x_3は以下の式で推測できるようになります。

x3 = 0.70068905 * x1 + -0.64667957 * x2 + 12.1846948155

【学習済みファイル】
・<a href=https://github.com/nishizumi-lab/sample/blob/master/python/scikit/regression_analysis/multiple.learn”>multiple.learn

【Scikit-learn】重回帰モデルのファイル出力・保存
Pythonと機械学習ライブラリ「scikit-learn」を用いて、重回帰分析した結果(モデル)を出力(エクスポート・ダンプ)する方法について解説します。

【サンプルコード】学習済みファイルの読み込み

最後にjoblib.loadでCSVファイルを読み込んで、そのデータから重回帰分析を行い、生成して出力した回帰モデルを復元(インポート)しました。

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

clf = joblib.load('C:\prog\python\scikit\multiple.learn')

回帰係数と切片の抽出

a = clf.coef_ b = clf.intercept_

回帰係数

print("回帰係数:", a) print("切片:", b) """ 回帰係数: [ 0.70068905 -0.64667957] 切片: 12.1846948155 """
【Scikit-learn】重回帰モデルのファイルを読み込む(インポート)
この記事では、Pythonと機械学習ライブラリ「scikit-learn」を用いて、重回帰分析した結果を出力(エクスポート・ダンプ)する方法について解説します。

【その他】t値などを計算する場合は

Scikit-learnにはt値を計算する機能がないようなので、t値を計算したい場合はPythonモジュール「statsmodels」を用いましょう。

【Scikit-learn】機械学習入門・使い方・読み方
この記事では、Pythonモジュール「Scikit-learn」で機械学習を行う方法について入門者向けに使い方を解説します。
【Python入門】使い方とサンプル集
Pythonとは、統計処理や機械学習、ディープラーニングといった数値計算分野を中心に幅広い用途で利用されている人気なプログラミング言語です。主な特徴として「効率のよい、短くて読みやすいコードを書きやすい」、「ライブラリが豊富なのでサクッと...

コメント

タイトルとURLをコピーしました