nykergoto’s blog

機械学習とpythonをメインに

matplotlibで高校生っぽいグラフを描く

高校の時によくみたグラフをmatplotlibで書いてみたくなったので、やってみました。練習として初めてデコレーターを使って、プロットしたオブジェクトをいじって軸をあれこれするようにしてみました。 機能としてあるのは知っていたのですが、使ってみるとデ…

DCGANをChainerで実装

DCGANとは DCGANはランダムなベクトルから画像を生成するGeneratorと、画像が与えられた時にその画像がGeneratorによって作られたものなのか、本当の画像なのかを判定する関数Discriminatorでなりたっています。 DCGANのアイディア この2つの関数を相互に競…

PRML 10章の変分ベイズ法の実装

線形回帰に対する変分法を用いた計算について実装してみました。 コードは以下から github.com 変分ベイズではまず、隠れ変数も含めた完全データに対して同時分布を定義します。その後隠れ変数の分布が複数の関数の積として近似して表すことができる、という…

format記法の使い道

pythonでは変数の情報を文字列にする方法がいくつかありますが、その中でも僕はformat記法をよく使っています。 特に最近「dictionaryを文字列にしたいなぁ」という場合に、とてもきれいに書くことができるということを発見(というかドキュメントを読んで判…

pythonの自作モジュールimportで困ったこと

自作モジュールをimportしたい時 同じ階層にある時はsample.pyであれば import sample でやればOKです. でもあまりファイル数が多くなってくると,一定のまとまりでフォルダに入れて管理したくなります.そういう時は適当なフォルダにスクリプトを入れて,…

python の Xgboost を Windows で使いたい!

pythonをwindowsでやるなよ、という意見はごもっともですがでもやりたい時だってあるじゃん?なのでやりましょう。 環境 windows10 64bit 必要なものたち git bash MinGW-W64 pythonが使える何かしらの環境(Anacondaとか) git cloneする git bash を起動し…

pythonによる固有値固有ベクトル計算

pythonで固有値固有ベクトルを計算しようと思うと numpy.linalg (線形代数の便利関数のモジュール)以下にある numpy.linalg.eigs を使うことになります。 numpy.linalg.eig — NumPy v1.11 Manual この挙動が個人的な感覚とちょっとずれていて、そこでかな…

勾配ブースティングを実装してみた

勾配ブースティングとは 機械学習のアルゴリズムはいろいろなものがありますが、その中でも木構造を使ったアンサンブル学習の一つとして勾配ブースティング法と呼ばれるものがあります。 勾配ブースティング法は学習器を一つづつ追加していく加法的モデルと…

gitのコミットメッセージの書き方

git

最近ようやくgitをまともに使うようになってきました。 コミットメッセージの書き方がよくわかってなかったのでまとめます。 基本的なコミットメッセージのスタイル 英語で記述すること!! ピリオドなし 現在時制 文頭の単語は大文字から開始 基本フォーマッ…

PRML 第3章のEvidence近似

PRML第3章では、線形回帰モデルを扱っています。 その後半で、これまで固定だとしていた、重みwの分布の精度パラメータと、実際に観測される値tのモデルであるに現れるノイズの精度を表すの値もいい感じの数値にしちゃいましょうという話が出てきます。これ…

EMアルゴリズムについての殴り書き

EMアルゴリズムって何?隠れ変数が存在するモデルに対して、モデル変数を変化させた時に尤度関数を最大化させる方法の事.隠れ変数って何?実際に観測されないけれど、観測される値がどういう分布に従うのかを決定する変数のこと. 具体例で言うと、 回帰問…

ガウス過程による事前分布からのサンプル

前提条件 まず初めに目的変数は、ある重みのベクトルと、dataから得られた特徴ベクトルの線形結合であらわされるとします。 要するに となっているわけです。このとき、の事前分布が で与えられているとすると、ガウス分布の線形和もガウス分布なので、yの分…

pythonのメッシュ切りのやり方

pythonでグラフを書きたいときに、[-1,1]の範囲で等間隔にメッシュを切りたいなと思うことがあると思いますがそれのやり方メモ。 ## numpy.meshgridを使うやり方 ## (始まり、終わり、個数) X,Y = numpy.meshgrid(numpy.linspace(-1,1),numpy.linspace(-1,1)…

ギブスサンプリング:やってることのイメージ

統計の計算とかをやろうとすると、サンプリングという方法をとって計算をさせるという場面がよく起こります。どういうときに使うのかというと、例えば確率密度関数に従う確率変数zを引数に取るある関数の期待値が計算したい場合などです。この場合計算するべ…

Marsaglia法とBox-Muller法

一様分布からガウス分布を作るアルゴリズムとして有名なBox-Muller法というのがあります. 式としては、とした時に という変換を行う.これがBox-Muller ボックス=ミュラー法 - Wikipedia それと似たもので、一様分布する変数の範囲がちょっと変わってとし…

PRML 第5章

ニューラルネットワークのところを読んでいますが詰まりました.ニューラルネットワークでは、最終的な出力がという風になっていて、そこで疑問なのが、 例えばKクラスの分類問題をニューラルネットワークに説かせようと思った時、 この最後のの部分をソフト…

prml 第4章

先週から読み始めてようやく第四章までたどり着きました。噂には聞いていたのですが、ここまで重たいものだとは正直予想外で、なんとかかんとか頑張ってついていっているのか、はたまたわかったような気になっているのかは謎ですが、とりあえずちょっとづつ…

カーネル密度推定

PRMLを読んでいます。とりあえず出てくる式はすべて自分で追って、変形とかもやってるのでなかなか進まなくてもどかしいですが、もう多分確率密度関数とかを復習することは無いだろうし…と思いながらやってます。今日は二章のおわりまで行きました。 ノンパ…

PRML

ついに来たかというか、もう逃げられなくなったというか、機械学習について研究をするわけではないけれどそれの周辺分野を扱うんだから、一回は読んどかないとねと思っては居たのだけれど、やっぱりまとまった時間を取らないとクリアできない本であるし、な…

Pythonの日本語に対する厳しさ

タイトルのとおりです。詰まりました。一応どうやったらどうなったかを書いておこうと思うのですが、なぜそうなったのか文字コードについてほとんど全くわかっていない、それはすなわちASCIIだのunicodeだのShiftJISだのの違いがいまいちわかっていないって…

はじめます

print "Hellow World" 僕が今所属している研究室では、だれが言い出したか知りませんが、なんとなーくpythonが流行りのようで、数値実験にはみんなpythonを使っているみたい.僕はプログラム言語の中身についてまで詳しくしらないので、何が早いだとか、内部…