気になっていた O'REILLY 「実践 機械学習システム」をやっと買った。



これからちょっとずつ読み進めていこう。
まずは「第1章 Pythonではじめる機械学習」 から。
この本は、Pythonのライブラリである Numpy、Scipyを用い、scikit-learn で機械学習を学びます。
準備として、
ソースコードを利用
この ch01 配下の .py をダウンロードして使う。
ch01/
data/
web_traffic.tsv
gen_webstats.py
analyze_webstats.py
performance_test.py
現状(2015/4/27時点)、このweb_traffic.tsv は、
1.5.1 データを読み込む で紹介されている不適切な値 nan は含んでいない。
サンプルプログラムの .py ファイル内の __file__ は、実際の環境に合わせて編集するべきものと、勝手に思い込んでいたが、実際には .py を実行するディレクトリに data フォルダを作ってやれば、そのまま実行できた。
analyze_webstats.py の実行中に、polyfitで warning が出たが、とりあえず実行は終わり png ファイルも生成された。
SciPyの numpy.polyfit
に、この原因について、
High-order polynomials may oscillate wildly:
と書かれている。
境目となるのは、コマンドラインから確認すると、
であった。analyze_webstats.py の f100 の 100 を 30 に下げて、.py を実行。 あれ? 変わらず。
30 をさらに下げていくと、結局、後半の polyfit は 10 でも引っかかるようだ。
で、肝心の最適なモデルを決めることについて、本では 次数 2 のモデルが誤差が最小となっているが、analyze_webstats.py を実行する毎に変化する。次数 1 のときもあれば、次数 10 のときもある。
あれ? なんか変だな。
とりあえず、ひと通り進めてから考えよう。第1章でコケてるわけにはいかない。

これからちょっとずつ読み進めていこう。
まずは「第1章 Pythonではじめる機械学習」 から。
この本は、Pythonのライブラリである Numpy、Scipyを用い、scikit-learn で機械学習を学びます。
準備として、
ソースコードを利用
この ch01 配下の .py をダウンロードして使う。
ch01/
data/
web_traffic.tsv
gen_webstats.py
analyze_webstats.py
performance_test.py
現状(2015/4/27時点)、このweb_traffic.tsv は、
1.5.1 データを読み込む で紹介されている不適切な値 nan は含んでいない。
サンプルプログラムの .py ファイル内の __file__ は、実際の環境に合わせて編集するべきものと、勝手に思い込んでいたが、実際には .py を実行するディレクトリに data フォルダを作ってやれば、そのまま実行できた。
analyze_webstats.py の実行中に、polyfitで warning が出たが、とりあえず実行は終わり png ファイルも生成された。
>>> f100 = sp.poly1d(sp.polyfit(x, y, 100))
/usr/lib/pymodules/python2.7/numpy/lib/polynomial.py:560: RankWarning: Polyfit may be poorly conditioned
warnings.warn(msg, RankWarning)
>>>
SciPyの numpy.polyfit
に、この原因について、
High-order polynomials may oscillate wildly:
と書かれている。
境目となるのは、コマンドラインから確認すると、
>>> f33 = sp.poly1d(sp.polyfit(xp, y, 33))
>>> f34 = sp.poly1d(sp.polyfit(xp, y, 34))
>>> f35 = sp.poly1d(sp.polyfit(xp, y, 35))
/usr/lib/pymodules/python2.7/numpy/lib/polynomial.py:560: RankWarning: Polyfit may be poorly conditioned
warnings.warn(msg, RankWarning)
>>>
であった。analyze_webstats.py の f100 の 100 を 30 に下げて、.py を実行。 あれ? 変わらず。
30 をさらに下げていくと、結局、後半の polyfit は 10 でも引っかかるようだ。
で、肝心の最適なモデルを決めることについて、本では 次数 2 のモデルが誤差が最小となっているが、analyze_webstats.py を実行する毎に変化する。次数 1 のときもあれば、次数 10 のときもある。
あれ? なんか変だな。
とりあえず、ひと通り進めてから考えよう。第1章でコケてるわけにはいかない。
コメント