C++プログラミングのメモ

Last update 16/07/25 概要 プログラミングをする上で,変数名の付け方とかprivate/publicの使い分けとかを勉強したことをまとめておく. 【C++API】 API化/OOPプログラミング 目的は実装を隠すことで,利用者に影響を与えずに内部を常に改変できるようにす…

c++よく忘れること

c++

概要 久しぶりにC++を書こうとすると(というよりも読もうとすると)忘れてしまっていてリハビリするのがコピーコンストラクタ,this, Template, 参照渡し,仮想関数, オーバライド,スマートポインタ. コピーコンストラクタと代入演算子のオーバーロード C…

Common lispの開発環境

動機 遺伝的プログラミングの勉強をしているとLispの例が多いから.人工知能系の研究で従来から使われている理由(Cに比べての高級性)は最近の言語には劣るから意味ないと言われてもいるようだけど,少し本を読んだ限りでは高級性以外の関数型であること,…

ディレクトリ内のあるファイル群に処理を適用する

お題 あるディレクトリ配下のあるファイル群(例えば拡張子がrbのファイルに対してなど)に何か処理を適用する場合.スクリプトを書くときに良くあるのかな. Ruby Dir::glob("/home/nobunaga/codes/*.rb").each do |f| func(f) end python pythonもほぼ同様…

順列の作成

お題 N個の配列からM個の並びを全て列挙する.所謂縦列. python itertoolsを使う.自分で何もやっていないけど,pythonを使う意味はそこだから別に気にしない. import itertools if __name__ == "__main__": a = [0,1,2,3,4,5,6,7,8,9] for p in itertools…

ルーレット選択

お題 GAとかで使うルーレット選択を書く.いわゆる重み付きランダム選択.重みWがx:y:z=1:2:3の場合,x=1/6, y=2/6, z=3/6の確率で生成する.色んな言語で累積和,2分探索,乱数を扱う良い練習問題なのかな. python やり方としては重みの累積和の配列を作…

クロージャ with Python

目的 クロージャの使いドコロがいまいち分からないけれど,動作が(設定パラメタなどで)異なる関数を生成する,という目的で使うのかな?他にはクラス変数っぽい役割で使っているような例があるけどどんな意味があるのか良くわからなかった. 補足説明 pyth…

pythonでのスレッド

基本事項 pythonのthreadは複数コアに跨がらないので,CPU空き時間がないような並列化では意味が無い.そのような場合にはmultiprocessingモジュールを使う. threadingモジュールを使って、threading.Threadのサブクラスを作るか、インスタンスを作る,の2…

DEAPのメモ

概要 拡張性を最も意識している。データ構造もアルゴリズムもほとんどがカスタマイズ可能。 問題や遺伝子の型を扱う、creator, 遺伝子操作を扱うtoolboxが中心モジュール。 インストール 描画用にvpythonも入れておく(pipでコケる場合は面倒なのでaptで入れ…

Gazebo memo

worldファイルにモデル、センサなどすべての要素が記載される。フォーマットはSDF。 model(ODEの剛体と幾何両方含むもの)もSDFで定義される。worldファイルからインクルードする。 gzserver <world_file>でシミュレーションを実行する。 GUIツールとしてgzclientが使える</world_file>…

vpythonのメモ

インストール pip版はエラーでうまく使えなかった.aptでインストールする. $ sudo apt-get install python-visual メモ 座標系は右手系(xは→,yは↑,zは手前方向)(ODEも右手系なので悩む必要はない) 右マウスぐりぐりで回転.両方押しでスパン. cylin…

遺伝的アルゴリズムのメモ

基本 1975にHollandが提案. 最適化対象の関数の微分可能性や単峰性を要求しない(SAも同様). 但し,評価関数の順序性と,探索空間が位相を持っていることが要請される. 解の遺伝子表現方法を決めるということは,表現型と遺伝子型の符号化方法(コーディ…

ヒストグラムの階級幅の決め方

階級幅は基本的に等間隔.非等間隔だとどうしてもそこに恣意性が入る 階級幅の決め方は,まず,幅に関する自明な知見,例えば学年などがあるならそれを採用する. 次に,データから幅を決める場合,基本的には幅を決めるというよりはビン数を決める.データ…

pandas@python

概要 pandasというのをよく目にする.Rっぽくデータ処理するためのライブラリみたいだ. DataFrameに2次元配列を渡してデータを生成する.タプルの配列や,ハッシュ配列でも行ける. 行はindex, 列はcolumnsで名前を付ければ,名前でアクセス可能.行は意味…

scikit-learnのメモ

全体通して 多くの機械学習アルゴリズム(SVM, MLP, etc.)を統一したAPIで利用できる.つまり,多くの学習アルゴリズムが,モデルのオブジェクトを生成したら,fit(X,y)で学習して,predict(T)で予測する iris, digit, boston_house_priceなどの有名なサン…

Numpyのメモ

Numpyだけでも色々とメモが多いので別にする. よく忘れること scipyとの役割分担は?というのは,BLASとLAPACの関係.Numpyが基本的な線形代数演算(BLAS)で,それを使って科学技術計算(FFTとか)をするのがscipy(LAPACK). # ゼロ要素を除いたデータの和 d =…

NULL, NA, NaNの整理

基本事項 NULL, NA, NaNはそれぞれ意味が違う.NULLは無いこと(未定義),NAは使えないこと(Not Available,欠損値), NaNは数値でないこと(Not a Number,非数)だということを踏まえておく. 各言語での扱い R 全てあるので特に悩まない. 0/0はNaN. x = N…

scipy.spatial.Voronoiの使い方

問題設定 点群(points cloud)が与えられた時に,各点のボロノイ多面体の体積を求めたい. pythonの例 scipyにあるspatial.Voronoiを使うとボロノイ多面体を簡単に計算してくれる.spatial.VoronoiはQhullという凸解析ライブラリのラッパのようだ. 但し,spa…

pythonメモ

よく使うけど忘れること 改行 Pythonの一番なれない点としてインデントがブロックの意味を持つ点がある.勝手に改行したりすると意味が変わるので注意する.文の途中で改行したい時は"\“を文末に置く.ただし,(), {},[]中の”,“の後ろは”\“を省略可能. doc …

ODEとpyODE

環境構築 ODEのインストール aptで入るODEは描画のdrawstuffが付いてこないのでソースからインストールする. PyODEはdrawstuffを使わない.別途,pyopengl, VPythonなどで描画する. drawstuff自体はmake installで入らないので,インクルードファイルとラ…

異常検知のメモ

異常検知というよりは機械学習の基礎題材として勉強中.少しずつ追記していこう. 参考文献 日本語だと異常検知だけを扱った本として以下の3冊があるみたい. * 山西, "データマイニングによる異常検知", 2009. * 井手, "入門機械学習による異常検知", コロ…

MCMC

MCMCはマルコフ連鎖の定常状態が目的の確率分布になるように,マルコフ連鎖を設計して,そのマルコフ連鎖からモンテカルロ的にサンプリングする,っているイメージ.目的とか用語を1つずつ整理しよう. マルコフ連鎖 マルコフ〇〇というのはたくさんあってい…

データ解析でまずやることのメモ

データ解析をする際に,いきなり回帰したりクラスタリングしたりしない.まずはデータを見ることが重要.これをささっとやれるようにするためのメモ.あまり好きではなかったpythonだけど,pandas, numpy, scipyなどなどに触れると便利だと気づく・・・悔し…

RandomForest@scikit-learn

注意点 データは内部でnp.float32に変換されている.np.info(np.float32)で確認すると3.4e+38程度であふれることがわかる. スパース行列には対応していないので,TruncatedSVDなどの次元圧縮と併用する. xの与え方は[x1, x2, x3, ...]のようにリストで渡す…

git/githubメモ

###githubというよりもgitのメモ用語 remoteリポジトリ:サーバ上(githubならgithub)のファイル保管場所 local リポジトリ:ローカルのファイル保管場所 push :ローカルリポジトリのコミット状態をリモートリポジトリに反映 pull :リモートリポジトリか…

ニューラルネットワーク+深層学習

# ニューラルネット - 順方向ニューラルネットっていう一般的な構成は,オンライン型の関数回帰方法で,特に非線形関数の合成関数として回帰するものだと思う. - 3層でN層以上と等価な関数表現力があると言われているらしいが,じゃあ何で深層学習と呼ばれ…

Emacs:org-modeとhowmを一緒に使う

・インストール org-modeは最近の(emacs24)は標準で付属している.howmは以下でインストール(/usr/share/emacs/site-lisp/howm以下に入る) $ wget http://howm.sourceforge.jp/a/howm-1.4.2.tar.gz $ tar howm-1.4.2.tar.gz $ cd howm-1.4.2 $ ./configure…

Rのigraphでグラフ処理

BOOST Graph Libraryにチャレンジするもコンパイルエラーが読みにくくて挫折. Cからも叩けるということでigraphを使う.1.インストールの準備 CRANに入っているのでinstall.packageでplyrと依存関係があるが,2015/10/20現在だとUbuntu14.04のRはバージョ…

データ解析の前準備 in R

平均やばらつきをみたり,何か解析手法を適用する前にデータ自体をある程度把握しておきたい. 難しそうで,かっこいい手法やるよりも,まずはしっかりと基本的な特徴を眺めてみることも重要. そこで,一般的にやることをRでさくっとやるためのテンプレート…

主成分分析(PCA)

一般事項 ・多変量解析において,もともとの説明変数(X)では現象が捉えにくい時に,説明変数を変換して新たな軸(説明変数Z)で事象を捉えようとする方法. ・新たな説明変数は元の説明変数の1次結合として表現される.(Z1=a1x1+a2x2+...anxn). ・寄与率…