読者です 読者をやめる 読者になる 読者になる

けつあご日記

こんちは.菊地です.なんか浅ーいことをいろいろ書きます

Coursera ML ex1をpythonのライブラリを使ってやってみた【なれない日記20160801】

Python なれない日記 機械学習

前回は特にライブラリなどを使用せず,自分でコスト関数と勾配降下法を実装したが,今回はpythonの機械学習関係のライブラリ(scikit-learn)を使用してみた.
www.ketsuago.com

また,前回は1変数の場合をやったが今回は多変数の線形回帰を行った.(1変数でライブラリを使った実装はこちらCoursera Machine Learningの課題をPythonで: ex1(線形回帰) - Qiita

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
from sklearn import linear_model

data = np.genfromtxt("ex1data2.txt", delimiter=',')

x = data[:, 0:2]
y = np.array(data[:, 2])

regr = linear_model.LinearRegression()
regr.fit(x,y)

print('Prices predicted for (3000, 3) and (4000, 2):' 
  + str(regr.predict(np.array([[3000,3],[4000,2]]))))
print('Intercept: ' + str(regr.intercept_))
print('Coefficients: ' + str(regr.coef_))
print('Coefficient of determination: ' + str(regr.score(x, y)))

fig = plt.figure()
ax = Axes3D(fig)
ax.scatter(x[:, 0], x[:, 1], y, c='k', marker='+')
ax.plot_surface(np.array([[0,0],[5000,5000]]), np.array([[0,6],[0,6]]),
 regr.predict(np.array([[0,0,5000,5000],[0,0,6,6]]).T).reshape((2,2)), alpha=.5)

plt.show()

適当な3方向から見た図↓

f:id:kichiku_kikuchi:20160801152243p:plain:w400

f:id:kichiku_kikuchi:20160801152248p:plain:w400

f:id:kichiku_kikuchi:20160801152252p:plain:w400

出力↓

Prices predicted for (3000, 3) and (4000, 2):[ 481015.87425869  628964.56738864]
Intercept: 89597.9095428
Coefficients: [  139.21067402 -8738.01911233]
Correlation coefficient: 0.732945018029

intercept_が切片,coef_が各係数なので,最終的な仮説はだいたいこんな感じ.

{ \displaystyle
h_\theta (x) = 89597 + 139x_1 - 8738x_2
}

score(x, y)は決定係数だと思う.

うむうむ.さすがに簡単に書ける.データ量が極めて少ないので速さとかは比べないことにしよう.



↓アフィカスリンク

Python機械学習プログラミング 達人データサイエンティストによる理論と実践 (impress top gear)

Python機械学習プログラミング 達人データサイエンティストによる理論と実践 (impress top gear)