機械学習

重回帰分析を行うデータからLinearRegressionクラスを用いて重回帰式を算出してみた

以下の記事で読み込んだデータを元に、住宅価格の最適解を求めることを考える。

重回帰分析を行うデータを読み込んでみた 以下の「カリフォルニアの住宅価格データ」で、所得・築年数・部屋数・寝室数・人口・世帯人数・緯度・経度を元に、住宅価格を決めるモデルを...

上記住宅価格の最適解を求めるための、重回帰式の算出を行うクラスを、以下の記事では自前で作成していた。

重回帰分析を行うデータから重回帰式を算出するクラスを作成してみた 以下の記事で、\(\boldsymbol{\hat y} = X \boldsymbol w\)の最適解は、\(\boldsymbo...

この実装は、Python で利用できるデータ分析や機械学習のためのライブラリの一つであるscikit-learnを用いて行うこともできる。

今回は、(線形)回帰直線の算出時に利用したことがある、scikit-learnのLinearRegressionクラスを用いた重回帰式の算出を行ってみたので、そのサンプルプログラムを共有する。

LinearRegressionクラスのfitメソッドを呼び出して、目的関数\(\boldsymbol y = X \boldsymbol w\)の\(\boldsymbol w\)を出力した結果は、以下の通り。

import numpy as np
from sklearn.datasets import fetch_california_housing
from sklearn.linear_model import LinearRegression

# カリフォルニアの住宅価格データセットを取得
housing = fetch_california_housing()

# 住宅価格データセットのデータをX, 結果をyとする
X = housing.data
y = housing.target

# LinearRegressionクラスを使って、目的関数y=Xwのwを算出する
lr = LinearRegression()
lr.fit(X, y)

# 小数点以下3桁まで+指数表記しない形式に設定後、wを出力
np.set_printoptions(precision=3, suppress=True)
print("*** 目的関数y=Xwのwの値(バイアスを除く) ***")
print(lr.coef_)
print("*** 目的関数y=Xwのwの値(バイアス) ***")
print(lr.intercept_)
LinearRegressionクラスを用いて重回帰式の最適解となるwを算出



【PR】「Filmora」は初心者でも本格的な動画編集ができる大変便利なツールだった「Filmora」は初心者でも使いやすい動画編集ツールで、テンプレートとして利用できるテキスト・動画・音楽などが充実していると共に、複数...

また、上記LinearRegressionクラスのpredictメソッドを呼び出して、目的関数\(\boldsymbol y = X \boldsymbol w\)の最適解\(\boldsymbol{\hat y}\)を出力した結果は、以下の通り。

import numpy as np
from sklearn.datasets import fetch_california_housing
from sklearn.linear_model import LinearRegression

# カリフォルニアの住宅価格データセットを取得
housing = fetch_california_housing()

# 住宅価格データセットのデータをX, 結果をyとする
X = housing.data
y = housing.target

# LinearRegressionクラスを使って、目的関数y=Xwのwを算出する
lr = LinearRegression()
lr.fit(X, y)

# 小数点以下3桁まで+指数表記しない形式に設定後、wを出力
np.set_printoptions(precision=3, suppress=True)
print("*** 目的関数y=Xwのwの値(バイアスを除く) ***")
print(lr.coef_)
print("*** 目的関数y=Xwのwの値(バイアス) ***")
print(lr.intercept_)
print()

# 先頭3件のデータx_data, 結果y_data, 目的関数wから算出した結果y_hatを出力する
print("*** 目的関数y=Xwから算出した結果 ***")
for idx in range(3):
    print("*** x_data[{0}]の値 ***".format(idx))
    x_data = X[idx]
    print(x_data)
    print("*** y_data[{0}]の値 ***".format(idx))
    y_data = y[idx]
    print(y_data)
    print("*** y_hat[{0}]の値 ***".format(idx))
    print(lr.predict(x_data.reshape(1, -1)))
    print()
LinearRegressionクラスを用いて重回帰式の最適解を算出

要点まとめ

  • Python で利用できるデータ分析や機械学習のためのライブラリの一つとして、scikit-learnがある。
  • 重回帰式の算出は、scikit-learnのLinearRegressionクラスを利用して実施できる。