メニュー→表示→ガイド→固定ガイド ⌘+G
青い線が入り配置に役立つ。
optionを押しながらガイドをドラッグ&ドロップすると複数のガイドを作成できる。
消すときはドラッグして一番端に持っていく。一本のときは消えない。(正式なやり方かわからない)
commandを押しながらオブジェクトを移動するとガイドは無視。
Mactopia Japan : PowerPoint tips | 複数のガイドを使ってレイアウトを整える。
http://www.microsoft.com/japan/mac/officesolution/tips/powerpoint/09.mspx
Mactopia Japan - PowerPoint のオンラインヘルプ
http://www.microsoft.com/japan/mactopia/help.mspx?app=3&qu2=
January 29, 2009
January 22, 2009
Bloggerのタイトルを変更
Bloggerでのタイトルは「(名前) : (記事のタイトル)」がデフォルトだが、この順番やらを変更するにはレイアウトのHTMLをいじればいいらしい。
http://itfun.jp/2008/09/blogger_14.html
http://itfun.jp/2008/09/blogger_14.html
January 19, 2009
WordPressをローカルにインストールしたときに起きたエラー
Mac OS X Server 10.4.11にWordPress 2.6.1をインストールする方法
を参考にWordPressを入れた。
WordPressで、
Error establishing a database connection
というエラー。
phpMyAdminで、
#2002 - The server is not responding (or the local MySQL server's socket is not correctly configured)
というエラー。
いろいろ探したら、どうやらMySQL server version 5.1.30を新たに入れたために起こったエラーのようだ。
Leopardのデフォルトのphpのバージョンではソケットの場所を"/var/mysql/mysql.sock"としているのに対して、自分で入れたMySQLでは"/tmp/mysql.sock”という場所を使っている。
解決方法は、Mac OS X Server 10.4.4: Apache/PHP/MySQL の相互動作の機能強化の下半分を参考に。以下引用。
を参考にWordPressを入れた。
WordPressで、
Error establishing a database connection
というエラー。
phpMyAdminで、
#2002 - The server is not responding (or the local MySQL server's socket is not correctly configured)
というエラー。
いろいろ探したら、どうやらMySQL server version 5.1.30を新たに入れたために起こったエラーのようだ。
Leopardのデフォルトのphpのバージョンではソケットの場所を"/var/mysql/mysql.sock"としているのに対して、自分で入れたMySQLでは"/tmp/mysql.sock”という場所を使っている。
解決方法は、Mac OS X Server 10.4.4: Apache/PHP/MySQL の相互動作の機能強化の下半分を参考に。以下引用。
以下の手順に従って、以前の MySQL ソケットの場所を使うように PHP 構成ファイルを修正します。その後、Mac OS X Server にプリインストールされている
- もしなければ、“/etc/php.ini”を作成します(このためには、“/etc/php.ini.default”を“/etc/php.ini”にコピーします)。
- “/etc/phi.ini”構成ファイルをエディタで開き、[MySQL] セクションにある以下の行、
mysql.default_socket = /var/mysql/mysql.sock
これを、以下のように変更します。
mysql.default_socket = /tmp/mysql.sock- Web サーバを再起動し、新しい PHP の設定を有効にします。このとき、MySQL を再起動する必要はありません。
/var/mysql/mysql.sock
を利用する MySQL のバージョンを使いたくなった場合は、
/etc/php.ini
ファイルから上の行を削除するか、または行の内容を元に戻してください。
January 15, 2009
Pythonで大規模疎行列計算
scipy.splinalg.eigen
は
scipy.sparse.linalg.eigen
になったのかな。
http://handasse.blogspot.com/2008/02/python-scipyarpack.html
http://projects.scipy.org/pipermail/scipy-svn/2008-February/001910.html
は
scipy.sparse.linalg.eigen
になったのかな。
http://handasse.blogspot.com/2008/02/python-scipyarpack.html
http://projects.scipy.org/pipermail/scipy-svn/2008-February/001910.html
January 14, 2009
隠れマルコフモデルの例 その2
隠れマルコフモデルの例のつづき。
さて、たとえば、友人が初日に「散歩」二日目に「買い物」三日目に「掃除」という順で行動したら、その観測結果が得られる確率はいくらでしょうか、そして、このような観測結果が得られたとき三日間の天気はどのようであったでしょうか。前の疑問に対しては前向きアルゴリズム、後の疑問についてはビタビアルゴリズムを利用できます。(観測された事象系列を結果として生じる隠された状態の最も尤もらしい並びをビタビ経路と呼びます。)これらは、同じコードで実装することができます。以前のエントリーと同様、状態遷移図は次のように書けるとします。
まずアルゴリズムを理解するために初日に「散歩」したという情報のみがある場合を考えます。
初日の状態確率は(添字は何日目かを表すとします)
初日「雨」で「散歩」する確率は
このとき次の日「雨」の確率は
同様に初日「晴れ」で「散歩」して次の日が「雨」の確率は
つまり初日に「散歩」して次の日が「雨」であるとき
となります。Pr(雨0,散歩,雨1)<Pr(晴れ0,散歩,雨1) であることから、「晴れ→雨」であった可能性が高い、ということがわかります。
二日目が「晴れ」である場合についても計算すると「雨」「散歩」「晴れ」は
「晴れ」「散歩」「晴れ」は
つまり「散歩」して次の日が「晴れ」になるとき
となり、また「晴れ→晴れ」でありそうだということがわかります。
これらを併せて考えれば、「散歩」をする全体確率は
このときビタビ経路は「晴れ→晴れ」となります。
では初日に「散歩」、二日目に「買い物」した場合はどうなるでしょう。全体確率とビタビ経路を求めます。
初日に「散歩」したとき、二日目の「雨」である確率は0.138、「晴れ」である確率は0.162であるとわかっています。
また、「雨」に至るまでの尤もな経路は「晴れ→雨」、「晴れ」に至るまでの尤もな経路は「晴れ→晴れ」だとわかっています。
(つづく?)
→ Viterbi algorithm わかりやすくなってる!!!
→ 実装(コピペ)
さて、たとえば、友人が初日に「散歩」二日目に「買い物」三日目に「掃除」という順で行動したら、その観測結果が得られる確率はいくらでしょうか、そして、このような観測結果が得られたとき三日間の天気はどのようであったでしょうか。前の疑問に対しては前向きアルゴリズム、後の疑問についてはビタビアルゴリズムを利用できます。(観測された事象系列を結果として生じる隠された状態の最も尤もらしい並びをビタビ経路と呼びます。)これらは、同じコードで実装することができます。以前のエントリーと同様、状態遷移図は次のように書けるとします。
まずアルゴリズムを理解するために初日に「散歩」したという情報のみがある場合を考えます。
初日の状態確率は(添字は何日目かを表すとします)
Pr(雨0)=0.6, Pr(晴れ0)=0.4
初日「雨」で「散歩」する確率は
Pr(雨0,散歩)=Pr(雨0)*Pr(散歩|雨0)=0.6*0.1=0.06
このとき次の日「雨」の確率は
Pr(雨0,散歩,雨1)=Pr(雨0,散歩)*Pr(雨1|雨0)=0.06*0.7=0.042
同様に初日「晴れ」で「散歩」して次の日が「雨」の確率は
Pr(晴れ0,散歩,雨1)=0.4*0.6*0.4=0.096
つまり初日に「散歩」して次の日が「雨」であるとき
Pr(散歩,雨1)=Pr(雨0,散歩,雨1)+Pr(晴れ0,散歩,雨1)=0.042+0.096=0.138
となります。Pr(雨0,散歩,雨1)<Pr(晴れ0,散歩,雨1) であることから、「晴れ→雨」であった可能性が高い、ということがわかります。
二日目が「晴れ」である場合についても計算すると「雨」「散歩」「晴れ」は
Pr(雨0,散歩,晴れ1)=0.6*0.1*0.3=0.018
「晴れ」「散歩」「晴れ」は
Pr(晴れ0,散歩,晴れ1)=0.4*0.6*0.6=0.144
つまり「散歩」して次の日が「晴れ」になるとき
Pr(散歩,晴れ1)=0.018+0.144=0.162
となり、また「晴れ→晴れ」でありそうだということがわかります。
これらを併せて考えれば、「散歩」をする全体確率は
Pr(散歩)=0.138+0.162=0.3
このときビタビ経路は「晴れ→晴れ」となります。
では初日に「散歩」、二日目に「買い物」した場合はどうなるでしょう。全体確率とビタビ経路を求めます。
初日に「散歩」したとき、二日目の「雨」である確率は0.138、「晴れ」である確率は0.162であるとわかっています。
また、「雨」に至るまでの尤もな経路は「晴れ→雨」、「晴れ」に至るまでの尤もな経路は「晴れ→晴れ」だとわかっています。
(つづく?)
→ Viterbi algorithm わかりやすくなってる!!!
→ 実装(コピペ)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env python | |
# -*- coding:utf-8 -*- | |
# Viterbi algorithm | |
# http://en.wikipedia.org/wiki/Viterbi_algorithm | |
# | |
# > python viterbi.py | |
# 0 1 2 | |
# Rainy: 0.06000 0.03840 0.01344 | |
# Sunny: 0.24000 0.04320 0.00259 | |
# (0.01344, ['Sunny', 'Rainy', 'Rainy']) | |
# HMM | |
states = ('Rainy', 'Sunny') | |
observations = ['walk', 'shop', 'clean'] | |
start_probability = {'Rainy': 0.6, 'Sunny': 0.4} | |
transition_probability = { | |
'Rainy' : {'Rainy': 0.7, 'Sunny': 0.3}, | |
'Sunny' : {'Rainy': 0.4, 'Sunny': 0.6}, | |
} | |
emission_probability = { | |
'Rainy' : {'walk': 0.1, 'shop': 0.4, 'clean': 0.5}, | |
'Sunny' : {'walk': 0.6, 'shop': 0.3, 'clean': 0.1}, | |
} | |
# Helps visualize the steps of Viterbi. | |
def print_dptable(V): | |
print " ", | |
for i in range(len(V)): print "%7d" % i, | |
for y in V[0].keys(): | |
print "%.5s: " % y, | |
for t in range(len(V)): | |
print "%.7s" % ("%f" % V[t][y]), | |
def viterbi(obs, states, start_p, trans_p, emit_p): | |
V = [{}] | |
path = {} | |
# Initialize base cases (t == 0) | |
for y in states: | |
V[0][y] = start_p[y] * emit_p[y][obs[0]] | |
path[y] = [y] | |
# Run Viterbi for t > 0 | |
for t in range(1,len(obs)): | |
V.append({}) | |
newpath = {} | |
for y in states: | |
(prob, state) = max([(V[t-1][y0] * trans_p[y0][y] * emit_p[y][obs[t]], y0) for y0 in states]) | |
V[t][y] = prob | |
newpath[y] = path[state] + [y] | |
# Don't need to remember the old paths | |
path = newpath | |
print_dptable(V) | |
(prob, state) = max([(V[len(obs) - 1][y], y) for y in states]) | |
return (prob, path[state]) | |
print viterbi(observations, | |
states, | |
start_probability, | |
transition_probability, | |
emission_probability) |
Subscribe to:
Posts (Atom)