技術メモ

役に立てる技術的な何か、時々自分用の覚書。幅広く色々なことに興味があります。

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

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

仮想環境の中で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層のニューラルネットなんだけど、通常のニューラルネットと違い、学習は出力層と中間層の重回帰で学習する。通常のようなバックプロパゲーションのよ…

2系を使っているWindowsにtensorflow導入 (python2.7 + widows + tensorflow)

tensorflowを使いたいけどデフォルトでpython2系を使っていて困っていた。 幸いanacondaを使っていたので結果的には簡単に導入できたという話。 手順にすると簡単に見えるが、ここまで来るのに紆余曲折したから一応記録しておく。OS:Windows10 Anaconda4.2.…

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

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

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

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

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

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

pythonの仮想環境に関する話

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

快適コマンドプロンプト生活 (Gow + ConEmu + chocolatey)

コマンドプロンプトはレガシー。使いづらい。見た目が嫌い。これだからWindowsはクソ。 と罵られてばかりのコマンドプロンプトだけど、今回はコマンドプロンプトを最大限に使いやすいくしてやろうという話。 Cygwinはホームが変だったり所々使いにくくて嫌い…

カオス理論入門(pythonでアトラクタの軌跡を描く)

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

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] ※この書き方だと順序は保持されない順序…

ポモドーロテクニックという時間管理術

ポモドーロテクニックという時間管理術を知った。 一部ではもてはやされているようだけどどうなんだろう。ポモドーロテクニックとは 1. 25分+5分の休憩を1ポモドーロとする。 2.1ポモドーロ内には自分の決めたタスクだけに集中する。 3.4ポモドーロごと…

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

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

RSA暗号を実装してみる(理論編)

知識編で説明したように、RSA暗号の最大の特徴は暗号鍵から復号鍵を類推することが難しいというところにある。今回は、この特徴が数学的にどのように実現できているのかについて見ていく。 RSA暗号を実装してみる(知識編) - 技術メモ RSA暗号を実装してみ…

RSA暗号を実装してみる(知識編)

WEPキーに脆弱性があって突破されてしまうということを知ってから、最近暗号理論に興味をもって勉強していた。その中で、RSA暗号すげえってなったから実装してみたいと思う。単純そうに見えて奥深い。今回はまず暗号について勉強した知識をまとめる。数学的…

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

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

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

pythonのライブラリでおなじみ、scikit-learnで主成分分析をする方法。 最終的には累積寄与率をプロットできるようにしたい。タスクとしては基本的な手書き文字認識を題材にする。 基本 import matplotlib.pyplot as plt import seaborn as sns sns.set_styl…

webブラウザ上ででターミナルを動かすという変態的なライブラリButterfly

タイトル通りだけど、webブラウザ上でターミナルを動かすbutterflyというものを見つけたので触ってみた。 これといって使うメリットは思い浮かばないが、何しろ変態的でなんとなくカッコイイ。 コマンドはこれだけ(pipが使えない人はまずpipをから入れてくだ…

グラフが綺麗に描ける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)

むかし作ったやつを手直しして載せる 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で取れる。 …

ubuntuの見た目をwindows10風にカスタマイズする [Ubuntu16.04LTS]

Linuxを使っているとWinowsが恋しくなる時があるはずです、よね。 僕はどうしてもUbuntuの安っぽいアイコンが好きになれない。 そこでubuntuをWindows10風にアレンジすることにした。手順としては 1.外観を変更するアプリケーション(gnome tweak tool か u…

VAIO S1311でBIOS起動方法&使用感

VAIOにVMwareを入れてubuntuを動かしたかったが、 VMPlayerを起動しようとすると "Intel VT-x に対応していますが、Intel VT-x は無効になっています。" と怒られてしまった。 VAIOでBIOSに入ろうと思ったのだが入り方がわからない!BIOSに入れたはいいが何…

pyxファイルとは(cythonについて)

他人のソースを動かしていると、.pyxというファイルがあって、これ何?と思ったから調べてみた。.pyxの拡張子とは、PythonをC言語ライクにコンパイルするCythonというメタ言語のスクリプトファイルのこと。つまり、Cythonっていうほぼpythonみたいな言語があ…

pythonで進捗バーを表示してみた

※python2.7系ですpythonで普通にprint文を書くと for i in range(5): print i 0 1 2 3 4 となりコンソールに上書きされずに改行されてプリントされていく。処理中のファイル名や内部変数の値などをリアルタイムで見ていきたい時は改行せず上書きしたほうが見…