【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ファイルを読み込んで、そのデータから単回帰分析を行いました。

【サンプルコード】単回帰モデルの作成

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


読み込むデータ

data.csv


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

【線形回帰で作成したモデル式】

x2 = -0.0495480955455 * x1 + 20.1197546804

【サンプルコード】単回帰モデルの読み込み

作成して保存したモデル(clf.learn)は、以下のように読み込んで使うこともできます。


【Scikit-learn】単回帰モデルのファイル出力・保存
この記事では、Pythonと機械学習ライブラリ「scikit-learn」を用いて、単回帰分析した結果を出力(エクスポート・ダンプ)する方法について解説します。
【Scikit-learn】単回帰モデルのファイルを読み込む(インポート)
この記事では、Pythonと機械学習ライブラリ「scikit-learn」を用いて、単回帰分析した結果を出力(エクスポート・ダンプ)する方法について解説します。
【Scikit-learn】機械学習入門・使い方・読み方
この記事では、Pythonモジュール「Scikit-learn」で機械学習を行う方法について入門者向けに使い方を解説します。

コメント

  1. you より:

    youtubeからこちらのサイトに来ました。
    貴重な情報ありがとうございます。

    【Scikit-learn】単回帰分析の所で質問なんですが、

    # 説明変数xに “x1″のデータを使用
    x = data.loc[:, [‘x1’]].values

    # 目的変数yに “x2″のデータを使用
    y = data[‘x2’].values

    にするとあります。
    locでx1のデータを抜き出すのと、x2のデータではデータの型が違うのですか?
    どちらもSeries型となって、valuesでnumpy配列にしていると思うのですが。

    xが2次元配列、yが1次元配列というところまで勉強している程度なんで、
    基礎的な質問で申し訳ないですが、どのような意図でこのようにしているのか教えて下さい。

    • 管理人 より:

      fit()にXとyを代入する際、説明変数Xは行列(2次元配列)を与える必要があります。
      data[‘x2’].valuesだと、1次元配列として1つの配列を取得するため、二次元配列に変換してやるコードを追加する必要があります。
      その手間を省く意味と、重回帰の場合はlocを使わないといけないという理由でdata.loc(複数のカラムを2次元配列で取得)としています。

      https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LinearRegression.html

      fit(self, X, y, sample_weight=None)[source]
      
      X{array-like, sparse matrix} of shape (n_samples, n_features)
      Training data
      
      yarray-like of shape (n_samples,) or (n_samples, n_targets)
      Target values. Will be cast to X’s dtype if necessary
      
タイトルとURLをコピーしました