機械学習-部屋の広さから家賃を求めてみる (学習過程)
別記事の機械学習-部屋の広さから家賃を求めてみる (プログラム)では80個の学習データから線形回帰を算出し家賃を推測させるプログラムを作りましたが、実際にどのような学習過程を経て最終的な線形回帰を導き出したか図示化してみます。
ここで学習過程を以下の色で図示化してみます。0-19 学習結果:緑
0-39 学習結果:黒
0-59 学習結果:黄
0-79 学習結果:緑
ソースコード
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 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
#準備作業 import pandas as pd import matplotlib.pyplot as plt from sklearn import linear_model #学習用データの読み込み dataframe = pd.read_fwf('rent_area.txt') x_values = dataframe[["area"]] y_values = dataframe[["rent"]] #学習用データの確認 dataframe.head() dataframe.tail() #matplotlibで学習用データの図示化 array_x = x_values.as_matrix() array_y = y_values.as_matrix() # データを学習用/評価用に分割 att_train1 = array_x[0:20] #学習用属性データ lab_train1 = array_y[0:20] #学習用正解ラベル att_train2 = array_x[0:40] #学習用属性データ lab_train2 = array_y[0:40] #学習用正解ラベル att_train3 = array_x[0:60] #学習用属性データ lab_train3 = array_y[0:60] #学習用正解ラベル att_train4 = array_x[0:80] #学習用属性データ lab_train4 = array_y[0:80] #学習用正解ラベル #linear_model(線形回帰)での学習 clf1 = linear_model.LinearRegression() clf1.fit(att_train1,lab_train1) clf2 = linear_model.LinearRegression() clf2.fit(att_train2,lab_train2) clf3 = linear_model.LinearRegression() clf3.fit(att_train3,lab_train3) clf4 = linear_model.LinearRegression() clf4.fit(att_train4,lab_train4) #matplotlibで学習結果の図示化 plt.xlabel('area') plt.ylabel('rent') plt.scatter(array_x,array_y) plt.grid() plt.plot(att_train1,clf1.predict(att_train1),color='green',label = "Data 0-19") plt.plot(att_train2,clf2.predict(att_train2),color='black',label = "Data 0-39") plt.plot(att_train3,clf3.predict(att_train3),color='yellow',label = "Data 0-49") plt.plot(att_train4,clf4.predict(att_train4),color='red',label = "Data 0-79") plt.legend() # 凡例を表示 plt.show() |
このように学習を繰り返していくうちに直線の向きを変更し、適切な傾きになるように修正していることが分かります。