今回、取り組むのは計算されたグラフを視覚的に捉えたいので
グラフ化したいということに取り組みます。
予測結果は↓のように
でていますが、これをどうやってグラフにするかですね。
もともとオリジナルのデータを↓のようにグラフにしていたので、
これを予測版でも作って並べてみました。
赤で囲ったあたりは変わったのがよくわかります。
正答率89%なので、計11個右と左で違うのがあるはずです。
問題はこの絵を見てもどこに閾値があるかわからないことです。
なので問題文には↓
とあり、予測結果のthetaを使ってDecisionBoundary(境界線)を
引く方法を見てみてくださいとあります。
ということでプログラム詳細plotDecisionBoundary.mを見てみました↓
な、ながい。。。。
今回は赤枠で囲った部分が使われている部分なので、
ここだけをしっかり見たいと思います。
plot_x = [min(X(:,2))-2, max(X(:,2))+2]
↑の部分は最小からさらに2引いたポイントと最大からさらに2足したポイントの
2点を表しています。
plot_y = (-1./theta(3)).*(theta(2).*plot_x + theta(1))
↑の部分はplot_xでpが0.5になる数字を逆算している式だと思います。
というのはplot_x,plot_yは具体的には↓になります。
を実行するとこのグラフができます↓
左上のポイントをXとみなしてpを計算すると0.5になります↓
なので、さっきでてきたこの式↓
plot_y = (-1./theta(3)).*(theta(2).*plot_x + theta(1))
pが0.5になるポイントを逆算していると思いました。
ということはXの最小値から2引いたものと最大値から2たしたものについて
0.5となるポイントを逆算して2点を直線でつないでいるということだと思います。
この直線とオリジナルの分布図をhold onの機能で合成して完成となります。
ところでplot(a,b)はaとbの間に直線を引くことのできる関数となります。
実験してみます。
違いました。
a(a1,a2),b(b1,b2)
でa1,b1とa2,b2の間に線を引く式ですね。
どこかのWeek8の課題でdrawLineをつなぐ関数がありますが、
(出典;『Coursera Machine Learning』 By Mr. Andrew Ng)
これはplotの応用だったということですね。
今回はここまでです。また次回頑張ります!