以下の記事で読み込んだデータを元に、住宅価格の最適解を求めることを考える。
重回帰分析を行うデータを読み込んでみた 以下の「カリフォルニアの住宅価格データ」で、所得・築年数・部屋数・寝室数・人口・世帯人数・緯度・経度を元に、住宅価格を決めるモデルを...
上記住宅価格の最適解を求めるための、重回帰式の算出を行うクラスを、以下の記事では自前で作成していた。
重回帰分析を行うデータから重回帰式を算出するクラスを作成してみた 以下の記事で、\(\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_)
【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()
要点まとめ
- Python で利用できるデータ分析や機械学習のためのライブラリの一つとして、scikit-learnがある。
- 重回帰式の算出は、scikit-learnのLinearRegressionクラスを利用して実施できる。





