Python

pytestを使ったFlaskのテスト

はじめに 普段のデータ分析や機械学習モデリングをやっているのでテストコードを書くことは多くなかったので、Flaskでアプリケーションを作り出すとテストをどう具体的に書いていいのかわからなかった。基本的なことはTesting Flask Applicationsを参考にし…

GAEへpythonとFirestoreを使ったサービスをデプロイする

はじめに Python3.7のruntimeがGAE standard environmentで使えるようになったため、flaskでアプリを作ってGAEへデプロイしている。DBにDatastoreとFirestoreが選択肢に入ってくるが、GoogleがFirestoreが後継だと強く言っているようなので、今回はこちらを…

Pythonのクロージャ理解する

少し複雑なデコレータを実装したくなったけど、クロージャの挙動ちゃんと理解してないなと思いFluent Pythonで復習しました。 使ったのは第7章5節と6節です。Fluent Python ―Pythonicな思考とコーディング手法作者: Luciano Ramalho,豊沢聡,桑井博之,梶原玲…

完全ランダム木のアンサンブルによる確率密度推定

Qiita Advent Calenderに記事書いた。完全ランダム木をアンサンブルした学習器で、すべてのサンプルが一つずつ最終ノードに入るまで木を生い茂らせ、その深度を基にそのデータが生まれてくる確率密度を推定してやろうというもの。会社で下記の本の読み会や…

KerasでCifar10分類、とりあえずCNNのAlexModelで

GPUマシンが使えるようになったので、Kerasで用意されているデータセットの中にcifar10があったので学習・分類してみた。 モデルはcifar10の作成者でもあり、ILSVRC2012優勝者でもあるAlex Krinzhvskyさんの優勝時のモデルがベース。 モデルの構成について深…

CodingBatでアルゴリズム100本ノック

これまでの自分のプログラミングは機械学習周辺に偏っていて、コンピューターサイエンスやったことある人間が通ってくる基本的なアルゴリズムについての知識が足りていないとの指摘を受けたので、その部分を埋めるためにCodingBatにチャレンジしてみた。Codi…

Scikit-learnのpipeleine.Pipelineが便利

分析する際に、次元圧縮→分類のような流れで行う場合には、scikit-learnのPipelineが便利。特にハイパーパラメーターを探すときには手続が煩雑になることもありますが、まとめて分類器としててGridSearchCVに突っ込むだけで良いのでめんどくさいこと考えずに…

Spark MLlibの協調フィルタリングを活用したMovie Recommendation

Sparkを触る機会が増えてきてるので、知識の棚卸しを兼ねてMLlib使ってレコメンデーションシステムを実装してみました。SparkSamit2014などMLlibのチュートリアル的に色々使われているSparkのMovie Recommendationですが、edXのIntroduction to Big Data wit…

Spark MllibでのClick through rate(CRT) 予測

1年以上も前ですが、edXのScalable Machine learningを受講していた時のコードが出てきたので、見直してみました。この講座のネタが、KaggleのCriteoのコンペのデータ を基にしたCTR予測でして、One-hot-encodingやhushingした高次元のデータを Mllibのロジ…

PRML 7章 サポートベクトルマシン

パターン認識と機械学習、第7章「Sparse Kernel Machines」に入ってSVMの実装をしてみます。 図7.2の再現を行うにあたり、カーネルがガウジアンカーネルが選択されているようなので、今回の実装もこれに従います。いつも通り境界面の求め方など、SVMそのもの…

PythonでXGBoostをちゃんと理解する(3) hyperoptでパラメーターチューニング

xgboostのハイパーパラメーターを調整するのに、何が良さ気かって調べると、結局「hyperopt」に落ち着きそう。 対抗馬はSpearmintになりそうだけど、遅いだとか、他のXGBoost以外のモデルで上手く調整できなかった例があるとかって情報もあって、時間の無い…

PythonでXGBoostをちゃんと理解する(2) ライブラリ作者から学ぶ

XGBoostについて調べてたら、開発者本人から学ぶ的な動画があったので観てみた。www.youtube.com時間にして約1時間半、英語が苦手でなくて時間がある方は直接見て頂くと面白いかも。目次はこんな感じ。 ・Introduction ・Basic Walkthrough ・Real World App…

Pythonで実装 PRML 第5章 ニューラルネットワーク

PRML5章から図5.3を再現するために、ニューラルネットワークを実装してみます。 先に申し上げておきますと、偉そうに実装とか言ってるものの、コードから再現した図は歯切れの悪いものとなっております。。。まず、図5.3(b),(c),(d)に関してはPRMLの中の図に…

PythonでXGBoostをちゃんと理解する(1)

なんせ、石を投げればxgboostにあたるくらいの人気で、ちょっとググれば解説記事がいくらでも出てくるので、流し読みしただけでなんとなく使えるようになっちゃうので、これまでまとまった時間を取らずに、ノリと勢いだけで使ってきた感があります。が、腹に…

Pythonで実装 PRML 第4章 パーセプトロンアルゴリズムによる分類

前回に続いてパターン認識と機械学習、第4章「線形識別モデル」の図4.7の再現です。この図はパーセプトロンアルゴリズムでの分類が収束する様子を表したもので、右下の図で収束完了となってます。本当は特徴空間上での話なのですが、作図の都合上、となる恒…

Pythonで実装PRML 第4章 最小二乗法とロジスティック回帰による識別

パターン認識と機械学習、第4章「線形識別モデル」に入って図4.4、図4.5の再現を行います。まずは4.1.3の最小二乗法による識別ですが、ノイズが混ざると上手く分類できない点、多分類になると上手く機能しない点が図の4.4、4.5で説明されてます。 また、4.3.…

Pythonで実装 PRML 第3章 ベイズ線形回帰

パターン認識と機械学習、第3章からベイズ線形回帰が予測分布を収束させていく様子を再現します。 やっていることは、1章でやったベイズ推定とほぼ一緒で、基底関数がガウス関数(3.4)になっているだけです。 ですので、コードもほぼほぼ流用してます。1章と…

Pythonで実装 PRML 第2章 確率分布 ノンパラメトリック手法

パターン認識と機械学習、第2章からは「2.5.2 ノンパラメトリック手法」を実装します。取り出してきたデータの数を数え上げて、確率分布を把握する手法が紹介されてます。 この章はあんまり時間かけてもしょうが無いなと感じたので、さくっと実装。 カーネル…

Pythonで実装 PRML 第1章 ベイズ推定

前回に続いて、PRML1章から「1.2.6 ベイズ推定」の実装です。 図1.17の再現ですが、M=9とした上で、予測分布の平均と±1σの範囲を示しています。数式追ってるだけだと抽象的で、いまいちピンと来なかったんですが、 実装することで、(1.70)、(1.71)が分布を示…

Pythonで実装 PRML 第1章 多項式曲線フィッティング

パターン認識と機械学習、第1章から「多項式多項式曲線フィッティング」の図の再現に取り組んでみます。 早速図1.4の再現から行ってみたいと思います。また、データの数を増やすことで、予測の正確性が増すことの確認を図1.6で行っています。数学的にも実装…

PuLPを使った線形計画法(Linear Programming)

カーネルやら何やらを理解するために、非線形計画法を勉強中。 で、その前に線形計画法で実際に手を動かしたくなったので無償で使えるPuLPを使ってみた。今回例題として解いたのは「これならわかる最適化数学」の第6章、線形計画法。 似たような例題がいくつ…

PysparkのMllibでリッジ回帰

作ったPysparkの環境でMap関数の練習リッジ回帰やってみました。元ネタはedXのこの講義↓ Scalable Machine Learning | edXデータはMillionSongDatasetから取得できます。で、結果から先に書きますと、Default値含めてGridsearchしたにも関わらず、 Default値…

scikit-learnで機械学習:決定木(2)

前回の続きで、Scikit-learnの決定木を使ってみます。ここから先は難しいことは何もなくて、本家に従いながら走らせてみる。もろもろimport。 import numpy as np import pandas as pd from sklearn import datasets from sklearn import tree from sklearn.…

10分でPandasを学ぶ

"pandas 0.15.2 documentation"の中に、"10 Minutes to pandas"なんてのがあったので、覗いてみたらかなり頭の中が整理された。 まじめにやると10分じゃ終わらんが、便利そうなところだけかいつまんでメモ。 まずはPandasとNumpyのインポート。 #import libl…

Pythonで回帰分析

「わざわざPythonで?」ってところもあるかも知れませんが、とりあえず手を動かしてみようと、フィッシャー御大のあやめ(iris)のデータで回帰分析までやってみました。 参考にしたのは、「データサイエンティスト養成読本」。 データサイエンティスト養成読…