技術メモ

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

2次元配列の特定の要素からランダムに選択【numpy】

「0~1の値を取る2次元配列があって、0.7以上の要素を持つインデックスの中からランダムにインデックスを取ってくる。」 こんなことをしたい時にnumpyを駆使すれば綺麗に書けたのでメモしておく。 例えばこんな配列(numpyのarray)があったとする import numpy…

slackbotでbotに投げられた画像をダウンロードする

slackbotでシステムを作ろうとした時に、botに投げた画像をいったん保存する方法がわからなかったので、記録しておく。 slackbot自体の始め方 slackbot自体の使い方は他のブログなどで詳しく紹介されているのでそちらを参考にしてほしい。 インストールはこ…

為替の分足CSVデータが無料でダウンロードできるサイト

こちらでダウンロードできるようだ。 2001年1月から最新(おそらく定期的に更新)までのデータを扱える。 1分足より長いスパンにする時は独自で整形しないとしないといけないかもしれない。

root権限なしでcmakeをインストールする

root権限がない状態でcmakeをインストールする時、ソースからビルドする。 gcc,g++,makeが必要になる。 手順としては以下の通り cmakeのソースをダウンロード,解凍 インストール先のフォルダを作成 ビルド、インストール (状況に応じて)PATHを通す(※PATHの…

倍プッシュの錯覚に騙されてはいけない(マーチンゲール法)

FXの業界には、ギャンブル性の強いバイナリーオプションという取引がある。 バイナリーオプションとは、1分後や10分後の相場について「上がる」か「下がる」かについてのみ予想する取引のことである。 そのバイナリオプションの取引で、必勝法と謳い人々をだ…

為替相場の値動きにウィナー過程を仮定するのはダメかもしれない

為替相場の値動きに本当にウィナー過程を当てはめていいんだろうか。 簡単に調べられそうだったので、ドル円相場で少し調べてみた。 結果から言うと、正規分布っぽくなくねって結論が出てしまった。※ウィナー過程…確率過程においてが平均0分散sの正規分布に…

FXを始めて、金融工学の触りを学んで感じたこと

FXに興味が出てきて、バーチャルトレードで短期投資をしてたんだけど、10万円くらい負けてもうやめてやろうかと思った。 それで、負けん気というか、儲けてる奴は何をしてるんだろうと思って色々調べていると金融工学の分野に辿り着いてしまった。勉強してい…

pythonで正規性の検定【コロモゴロフスミルノフ検定(KS検定)】

確率分布が正規分布に従うか調べたい、 二つの集団が同じ確率分布から得られたものか調べたい、 といった時に使うのが、コロモゴロフスミルノフ検定(Kolmogorov–Smirnov test) コルモゴロフ–スミルノフ検定(コルモゴロフ–スミルノフけんてい、英: Kolmogoro…

二項分布の極限が正規分布になることの証明【正規近似の証明】

二項分布の試行回数を無限大に大きくしていくと正規分布に近づくことが知られている。 しかし、その証明は意外と知られていない。やが出てくるのがどうしても不思議で、自分なりに解こうとしたり調べてみた。 ようやくわかってきたので、自分的にわかりやす…

直下のファイルを走査し一覧表示する [bash, python]

あるディレクトリの直下のファイルに対して巡回しながら処理したい時 シェルスクリプトとpythonでどうするか。 bash files="./hoge/*" for filepath in $files; do echo $filepath done ./hoge/1.txt ./hoge/2.txt のようにディレクトリごと表示される ファ…

死ねクソプログラミング言語を作った

これ→死ねクソプログラミング言語コミュ障プログラミング言語に感化されて、新しいプログラミング言語を作ってしまった。 その名も「死ねクソプログラミング言語」。 汚い言葉だけでプログラミング言語を作ったら面白いんじゃね、と思い立ったわけだ。 まず…

pythonで完全数と友愛数と婚約数を求める

以前の記事の続きとして、せっかくなので友愛数・完全数・婚約数を求めてみたい。 約数関数(再掲) divisor(n)として約数関数を使うので、再掲しておく。 sympyを使う。 import sympy def divisor(n): factors = sympy.factorint(n) rst = 1 for i,j in fac…

sympyで素因数分解ができるからオイラー関数と約数関数を書いてみた

pythonのライブラリの一つsympyを使えば、簡単に素因数分解ができるということを知った。 import sympy sympy.factorint(1000) #{2: 3, 5: 3} ちなみに、因数分解も簡単にできる(◎.◎)!! 凄い。 import sympy x = sympy.Symbol('x') eqn = x**2 - 3*x + 2 pri…

pythonで一元配置分散分析(one way ANOVA)

一元配置分散分析とは 「3つ以上の群があった時に、果たしてそれらの群の平均は等しいと言えるかどうか。」 という検定。 集団の分布が正規性を持つことが前提となっている。*1 ※すべての組み合わせペアでt検定を適用するのは間違いなので注意*2基本的な発想…

一発でlocalhostのwebサーバーを立てる便利エイリアス

web

Flaskで開発していたり、http通信が必要となるjsのライブラリを使っているとlocalhostのwebサーバーを立てたくなることがある。 そこで苦労の末辿り着いた便利エイリアスを紹介したい。 それがこれ alias httpserver="python -m SimpleHTTPServer& start chr…

リスト内を検索して該当するインデックスを全て返す (python)

a = [1,2,3,2,3,4,5,4,3,2,1] こんなデータがあった時、3がある場所を取ってきたいとする。 a.index(3) # 2 とすると最初のインデックスだけが返ってくる。 希望は全てを取ってくることなので、これではダメ。 じゃあどうするか。 index = [] for i,j in enu…

AlphaGOの自己対戦棋譜のsgfファイル取得

有志によるSGFファイル https://s3-us-west-1.amazonaws.com/apetresc-site/alphago_selfplay.zip (ソース:apetresc comments on AG vs AG Games 11 through 20 now available)コピペ用 wget https://s3-us-west-1.amazonaws.com/apetresc-site/alphago_s…

pandasで重複数をカウントする

pandasで重複数をカウントしたい時、 例えばこんなデータがあったとする。 import pandas as pd df = pd.DataFrame([['AA',100],['AA',200],['AA',200], ['BB',100],['BB',200]],columns=['x','y']) #--------------- # x y # 0 AA 100 # 1 AA 200 # 2 AA 20…

pythonでgraphvizの使い方(美しいツリー構造や状態遷移図の描画)

pythonで美しいグラフ構造を書くためのツール。pythonでグラフ構造を書くといえば、今有名なのはnetworkxだろう。 でもnetworkxは描画には特化していない。どちらかというと分析に使うツールだ。 特に、状態遷移図や木構造を書くのには向いていない。 そこで…

sshを介してファイルのやり取り(sftp)

sftpの使い方メモサーバーに入るのはSSHと同じ要領 sftp [サーバー名]でサーバーに入る。 exitでsftpを終了。 サーバーからローカルにファイル転送 ファイル転送 get [ファイル名] ローカルのディレクトリ操作 基本的に先頭に"l"をつけるだけ lls #localのls…

2次元のランダムウォーク

import numpy as np import matplotlib.pyplot as plt time = 2000 state = np.zeros(2) orbit = np.zeros(2) for t in range(time): speed = 1 randomvec = np.random.random(2) - 0.5 randomvec *= speed/np.linalg.norm(randomvec) state += randomvec or…

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

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

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

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

引数のあるコマンドをエイリアスに登録する方法

OS

引数のあるコマンドをエイリアスに登録したい時、調べたのでメモ 例えば、複数のサーバーが用意されていてSSHするサーバーを使い分けるみたいな時。 ssh USER@SERVER1.com -p 8888 ssh USER@SERVER2.com -p 8888 ssh USER@SERVER3.com -p 8888 ...みたいなコ…

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

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

仮想環境の中で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桁まで(引数で指定可能)の素数リストを作っておいて、確率的な素数…