読者です 読者をやめる 読者になる 読者になる

技術メモ

役に立てる技術的な何か、時々自分用の覚書。統計学、機械学習、神経科学、暗号理論...と幅広く興味があります。

pythonを使ってFitzHugh南雲方程式のnullclineを描く

pythonでヌルクラインを描く方法 いくつか方法があるようだけど、matplotlibとscipyを組み合わせる方法が良さそうだった。 FitzHugh南雲方程式 FitzHugh南雲方程式とは、一言でいうと神経細胞(ニューロン)の挙動を数理的に表した方程式のこと。ニューロン…

三目並べの全ての状態数とその遷移関係を数え上げるアルゴリズム

三目並べでとりうる盤面の状態数を数えてみた。 英語ではTicTacと言ってボードゲームAIの入門によく使われる題材だったりする。 ゲームの状態数はよく9マス×3状態で通りだとか最初は9通りで次の番は8通り…だから通りだとか言われるけれどどれも厳密な答えで…

粘菌に迷路を解かせるシミュレーション

粘菌は凄い!なぜかって、脳がないのに餌までの最短経路を見つけることができる。 これが神経細胞の始まりだとか言われていたり言われていなかったりする 以前から知ってはいたが、調べているとニコ動でこんな動画があった。ちゃんとできている!しかもエク…

仮想環境の中でIPythonを使う方法 (virtualenv + ipython)

仮想環境下で pip install ipython ipythonとしても、デフォルトモードのipythonが立ち上がってしまう。 例えば、2系を標準に入れている端末で3系の仮想環境を作った時なんかは困ってしまう。簡単な解決法があったので紹介する。エイリアスにこれを登録して…

pythonで符号検定、ウィルコクソンの符号付き順位検定

符号検定 符号検定とは、勝ち負けなど〇×の判定で2つの群の優劣を判定する検定のこと。 「将棋ソフト同士を対決させて、試合の勝敗だけでソフトの強さを比較したい」等に使える。scipyを使う from scipy import stats stats.binom_test(x, n=None, p=0.5, al…

Extream Learning Machineの簡単実装

あまり知られていないかも知れないが、Extream Learning Machineというニューラルネットの一種がある。 3層のニューラルネットなんだけど、通常のニューラルネットと違い、学習は出力層と中間層の重回帰で学習する。通常のようなバックプロパゲーションのよ…

最強の素数チェッカーを作ってみた

前回の記事の最後に書いた、決定的な素数判定と確率的な素数判定をハイブリッドにしたら最強なんじゃないかという考えのもと、最強の素数判定器を作ってみた。 特にひねりはないが、最初に3桁まで(引数で指定可能)の素数リストを作っておいて、確率的な素数…

確率的素数判定法 vs. エラトステネスの篩

素数判定をするのは暗号の分野ではすごく重要なんだけど、そこでよく使われるのが確率的素数判定法というもの。 競技プログラミングの問題に出てくる程度の素数判定では、エラトステネスの篩と呼ばれる有名な素数判定アルゴリズムで充分なのだけど、暗号に使…

word2vecで「単語の足し算引き算」をしてみる

word2vecを試してみたいけど使ったことがないという人が対象 とりあえず動かしてみるのが目的。 ※python2.7.12で動かしているけど、3系でも大丈夫なはず。 word2vecとは word2vecとは、ざっくり言えば 「単語をベクトル表現にでき、意味の足し算や引き算がで…

pythonの仮想環境に関する話

pythonのvirtualenvで仮想環境の作成について。windows版 どうして仮想環境を使うのか チームで開発する時など、環境を統一する必要がある。 ネットで公開する時は、ゼロから環境構築を再現して試してみたい時がある。 仮想環境ではライブラリは何もないので…

カオス理論入門(プログラム編)

カオスについて勉強していた時に書いて見たかったもの。アトラクターの軌道を見てみたい。 目標としては3次元プロットして一定軌道をグルグル回っているところをプロットしてみる。有名なレスラーアトラクターとローレンツアトラクターを描いていきたい。 実…

結局Flaskが使いやすそう

最近web関係を触っていて、javascriptの知識もまだまだ足りないんだけれど、少し勉強するうちにやっぱりフレームワークがないと超不便だよねってことに気付いた。 で、じゃあ何を勉強するのかって話になる。 まず考えたのがこの2つ Ruby on Rails Django Ru…

pythonでたまに使う用法(リスト・内包表記・三項演算子・lambda…)

pythonのちょっと特殊だけどたまに使う記法について備忘録。 ※2.7系で動かしているので3系では動かないかもしれない。要調査。 リスト操作 リストの重複削除 a = [1,1,4,4,3,3,2,2,5,5] list(set(a)) # >>[1,2,3,4,5] ※この書き方だと順序は保持されない順序…

RSA暗号を実装してみる(プログラム編)

前回まではRSA暗号の原理を説明してきたけれど、いよいよ本題。実際コーディングに取り掛かる。理論では簡単に説明されるところでも実際にコーディングしてみると難しいところがある。 RSA暗号を実装してみる(知識編) - 技術メモ RSA暗号を実装してみる(…

pythonでニューロンのシミュレーション(Brianについて)2

スパイキングニューロンのシミュレータを触ってみる記事の2回目。 以前の投稿の続きとして、サンプルにはないものを書いてみた。 izhikevichモデルニューロンの集団発火 サンプルではLIFモデルだったが、izhikevichモデルで同じものを作ってみる。 プログラ…

scikit-learnで主成分分析(累積寄与率を求める)

pythonのライブラリでおなじみ、scikit-learnで主成分分析をする方法。 最終的には累積寄与率をプロットできるようにしたい。 基本 import matplotlib.pyplot as plt import seaborn as sns sns.set_style("whitegrid") import sklearn.decomposition # PCA…

グラフが綺麗に描けるpythonのライブラリseabornを使うとグラフを描くのが楽しくなる

pythonのグラフを美しく描くライブラリseabornというのを知ったので触ってみる。 こちらが公式サイト Seaborn: statistical data visualization — seaborn 0.7.1 documentation こんなのも描けるようになる。 インストール conda install seaborn pipでもで…

networkxでネットワーク特徴量の分析

networkxを触った時の備忘録。今回扱ったのは無向グラフに限る。 用語などの解説は別の記事に譲りたい。 (networkx(1.11.0) python(2.7.12)) 適当なグラフを作成・可視化 import networkx as nx import numpy as np import matplotlib.pyplot as plt # gener…

SOM(自己組織化写像)のプログラム (python)

むかし作ったやつを手直しして載せる。 (昔のを見てると、行列で書けばいいものを全部for文で書いてたりして可愛い。) SOMとは SOMはイメージとしては、"似たような"ベクトル同士が(1次元や2次元の)マップ上において"近傍に"配置されるように仕分けして…

pythonでスパイキングニューロンのシミュレーション (Brianについて)

スパイキングニューロンのシミュレータの一つBrianを紹介したい。 http://briansimulator.org/Brian以外にもニューロンのシミュレータにはいくつか存在する。 特にPythonでコーディングできるものに限定すれば、 有名なものにNEURON。他にも、NEST(pyNEST),P…

pythonでマンホイットニーのU検定

pythonでマンホイットニーのU検定する方法。 scipyを使う。 from scipy import stats stats.mannwhitneyu(x, y, use_continuity=True, alternative=None) alternativeは'less','greater','two-sided'。Noneの時は'two-sided' p値は返り値のpvalueで取れる。 …