$ pbpaste | perl -pe "s/('.*?'): ('.*?')/\2: \1/g"
最短一致がこのように書かれること
$ pbpaste | perl -pe "s/('.*?'): ('.*?')/\2: \1/g"
最短一致がこのように書かれること
要は pylab は matplotlib.pyplot だけでなく numpy や matplotlib.mlab の関数も呼べるようになるらしい。
たしかに、
>>> import pylab as pl >>> len(dir(pl)) 948 >>> import numpy as np >>> len(dir(np)) 585 >>> import matplotlib.pyplot as plt >>> len(dir(plt)) 231
多い(その確認の仕方はどうなんだ)。間違っても
>>> from pylab import *
などの操作をインタプリタでなく通常のファイル上でやろうものなら名前空間がひどいことになって大変だと思う。手間を惜しんで打つならこれが一番楽そうだけど。
で、あーだこーだ言いながら捻って出てきた数式のプロットがやりたくて、次のことをした。
>>> from pylab import * >>> t = linspace(0, 2*pi, 100) >>> x = sin(2*t) >>> y = cos(t) >>> plot(x,y) (ここで挙動不審になる) >>> show() (グラフの窓が出てくる)
係数は面倒なので含めなかった。
「電荷は、xy平面内でy軸にそう縦軸を持った対象な8字型の軌道を運動する。運動の周期は、パラメータtの0から2πまでの変化に対応する。」
とのこと。
蛇足ですが8字って聞くとハチの8字ダンスを思い浮かべて「志向的表象じゃん!」みたいな反応をしがちです。志向的表象はいいぞ。
という感じでした。一週間くらいずっとコードとにらめっこしてた。
状態の番号がよくわからんかったという話。
参考は http://mallet.cs.umass.edu/fst.php
// 各クラスの import や crfの宣言は済んでいるということにして... CRFTrainerByLabelLikelihood trainer = new CRFTrainerByLabelLikelihood(crf); trainer.setGaussianPriorVariance(10.0); trainer.train(trainingData); // transducer は何か便利なwrapperらしい transducer = trainer.getTransducer(); // SumLattice は確率出力用のクラス(?) // input はデータの系列、本例ではinput末尾のラベルが予測したいとする // もちろん番号を弄れば好きな位置の予測分布が得られます SumLattice latt = new SumLatticeDefault(transducer, input); Sequence result = transducer.transduce(input); // stnum は状態数(候補となるラベルの数) int stnum = transducer.numStates(); String names[] = new String[stnum]; double probs[] = new double[stnum]; for (int i = 0; i < stnum; i++) { names[i] = transducer.getState(i).getName(); // 次に予想される周辺確率の出力(resultの末尾で予測される各ラベルの確率) // result.size() の位置を知ればinput末尾の予測分布を知ることができる、のが大事 probs[i] = latt.getGammaProbability(result.size(), transducer.getState(i)); } // input末尾における各ラベルの予測確率 System.out.println("[Labels]" + Arrays.toString(names)); System.out.println("[Probs]" + Arrays.toString(probs)); // input末尾について予測されるラベル System.out.println("[Predict]" + result.get(result.size()-1).toString());
めでたしめでたし。