キンサクプログラマー

お金儲けと技術のメモ

scikit-learnで3分間機械学習

ちょい前のrebuild fmでscikit-learnの話があったので、どんなものか触ってみることにした。
rebuild.fm


scikit-learn: machine learning in Python — scikit-learn 0.18.1 documentation
よく知らないライブラリに触れるとなると大抵一つのチュートリアルをやって心が折れることが多い(
(tensorflowなんかまさにそれ)が、scikit-learnはインストールしてちょっと使い方を読んで、サンプルを動かすまで3分もかからなかった。

>>> X = np.sort(5 * np.random.rand(40, 1), axis=0)
>>> y = np.sin(X).ravel()
>>> y[::5] += 3 * (0.5 - np.random.rand(8))
>>> svr_rbf = SVR(kernel='rbf', C=1e3, gamma=0.1)
>>> svr_lin = SVR(kernel='linear', C=1e3)
>>> svr_poly = SVR(kernel='poly', C=1e3, degree=2)
>>> y_rbf = svr_rbf.fit(X, y).predict(X)
>>> y_lin = svr_lin.fit(X, y).predict(X)
>>> y_poly = svr_poly.fit(X, y).predict(X)
>>> lw = 2
>>> plt.scatter(X, y, color='darkorange', label='data')
<matplotlib.collections.PathCollection object at 0x1007987b8>
>>> plt.hold('on')
>>> plt.plot(X, y_rbf, color='navy', lw=lw, label='RBF model')
[<matplotlib.lines.Line2D object at 0x100798f28>]
>>> plt.plot(X, y_lin, color='c', lw=lw, label='Linear model')
[<matplotlib.lines.Line2D object at 0x105bc2278>]
>>> plt.plot(X, y_poly, color='cornflowerblue', lw=lw, label='Polynomial model')
[<matplotlib.lines.Line2D object at 0x10079ec88>]
>>> plt.xlabel('data')
<matplotlib.text.Text object at 0x10aac9e48>
>>> plt.ylabel('target')
<matplotlib.text.Text object at 0x10ac0f860>
>>> plt.title('Support Vector Regression')
<matplotlib.text.Text object at 0x1007779b0>
>>> plt.legend()
<matplotlib.legend.Legend object at 0x10121db00>
>>> plt.show()

f:id:pikurusux:20170303080157p:plain
サンプルそのままだが、
単純なサポートベクターマシンの学習だったらデータ変えてすぐに使えそう。
svmの分類処理自体は

 y_poly = svr_poly.fit(X, y).predict(X)

だけ。すげぇ

androidアプリのサンプルでエラー

githubで公開されてるandroidのプロジェクトをもってきたらエラーが出た。

github.com

Error:Execution failed for task ':Application:processDebugManifest'.
> Manifest merger failed : uses-sdk:minSdkVersion 7 cannot be smaller than version 9 declared in library [com.android.support:gridlayout-v7:25.0.1] /home/android-RecyclerView-master/Application/build/intermediates/exploded-aar/com.android.support/gridlayout-v7/25.0.1/AndroidManifest.xml
  	Suggestion: use tools:overrideLibrary="android.support.v7.gridlayout" to force usage

全然理解せずに、

tools:overrideLibrary="android.support.v7.gridlayout" 

だけ追加しても、別のエラーがでた。

build.gradleの

    defaultConfig {
        minSdkVersion 7
        targetSdkVersion 25
    }

7を適当にあげたらビルドが通った。
そもそも、7で動くのか疑問。個人かいはつだったらtargetSdkVersionと同じで良いかも

kerasのRNNで雑な為替予測(ディープラーニング)

ディープラーニングで相場に勝つのは誰しもが夢見ることだとは思います。
chainer,tensorflow,keras,theanoいろいろ扱いやすいライブラリも増えているので僕もやってみようかと思います。

登場人物


現段階では、正弦波のデータをRNNで学習しているサイトがあったので、そちらのモデルを拝借して1次元データの学習をさせてみました。
qiita.com

学習させるデータはUSD/JPYの日足データ、2000くらい(少な)。
計算も収束していないし、学習の結果も全然だめだめでした。
f:id:pikurusux:20170214201035p:plain
モデル選定ミスというよりも、ハイパーパラメータの設定がそのまま過ぎたので、適切な値に調整して再度調整したいと思います。
f:id:pikurusux:20170214201039p:plain

データサイエンティスト必須 jupiter notebookって知ってるか

%matplotlib inlineとかいう謎の記述

kerasを動かすためにサンプルをおもむろにコピペしていたところ遭遇。
python上で動かす、matlabみたいなツールらしい。
その他の特徴としては、

python以外の複数の言語にも対応しており、
ブラウザ上でソースコードを変更し、リアルタイムでグラフに反映するようなこともできる
f:id:pikurusux:20170214132850p:plain

データ分析の結果を即時確認することができるので、機械学習や統計をやっている人におすすめ。
まだ、あまり使えていないけどこれを使いながら機械学習を勉強していきたい

プレミアムフライデーという税金の無駄遣い

f:id:pikurusux:20150602011633j:plain
金曜の勤務時間を15時までにする、プレミアムフライデーが2月末に始まろうとしている。
にもかかわらず、導入企業(導入予定含む)は2.2%。
そもそも、導入したところで企業側にメリットがない。

プレミアムフライデーの現状と将来

経済産業省
↓ 消費増えたらうれしいよね?。協力してよ
経団連(消費増えたら嬉しいわ。 やろう!)
↓ 15時終わりにして消費伸ばそうよ
企業 : メリットないから導入はしないわ。プレミアムフライデーに合わせたキャンペーンはやるけどね。
公務員: 国の施策だからやりましょう。

将来的には

導入企業 (うち以外どこもやってないし、勤務時間が合わないからやりづらい! やめよう)
公務員   国の施策だし続けましょう

ってことになったらもう最悪。
すでにロゴ、ホームページ、推進キャンペーン、もろもろの会議とかで数億円〜数十奥円失われていそうな上に、
公務員の労働時間だけ短縮されしまうのだろうか。
不条理だ。

draw.ioマジすごい

まったく別の記事を書いていたけれど、その記事に載せる図を作成するために使ったdraw.ioが素晴らしかったので、
記事を書くのを中断した。

Flowchart Maker & Online Diagram Software

アイコンが豊富

一番の理由はアイコンの種類。
UMLやらクラウドの概念図に使われるような一般的なものから、AWSAndroidiOSなどのアイコンまである。
しかも綺麗

登録なし

類似サービスのCacooとかは登録が必要だが、draw.ioは登録の必要がない。
こんな感じでいきなり作図ができちゃう。
f:id:pikurusux:20170208053124p:plain

パワポとかキーノートとかで無理に頑張って作図してる人は、draw.ioを使うことをお勧めする。