以下の記事で読み込んだデータを元に、住宅価格の最適解を求めることを考える。
重回帰分析を行うデータを読み込んでみた 以下の「カリフォルニアの住宅価格データ」で、所得・築年数・部屋数・寝室数・人口・世帯人数・緯度・経度を元に、住宅価格を決めるモデルを...
上記住宅価格の最適解を求めるための、重回帰式の算出を行うクラスを、以下の記事では自前で作成していた。
重回帰分析を行うデータから重回帰式を算出するクラスを作成してみた 以下の記事で、\(\boldsymbol{\hat y} = X \boldsymbol w\)の最適解は、\(\boldsymbo...
この実装は、Python で利用できるデータ分析や機械学習のためのライブラリの一つであるscikit-learnを用いて行うこともできる。
今回は、(線形)回帰直線の算出時に利用したことがある、scikit-learnのLinearRegressionクラスを用いた重回帰式の算出を行ってみたので、そのサンプルプログラムを共有する。
LinearRegressionクラスのfitメソッドを呼び出して、目的関数\(\boldsymbol y = X \boldsymbol w\)の\(\boldsymbol w\)を出力した結果は、以下の通り。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | 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}\)を出力した結果は、以下の通り。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | 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クラスを利用して実施できる。