Skip to Content
エレガントなSciPy ―Pythonによる科学技術計算
book

エレガントなSciPy ―Pythonによる科学技術計算

by Juan Nunez-Iglesias, Stéfan van der Walt, Harriet Dashnow, 山崎 邦子, 山崎 康宏
November 2018
Intermediate to advanced
272 pages
6h 51m
Japanese
O'Reilly Japan, Inc.
Content preview from エレガントなSciPy ―Pythonによる科学技術計算
226
付録 演習の解答
A.15
 解答:ぶら下がりノードの処理法
以下は「
6.4.1
 演習:ぶら下がりノードの処理法」の解答です。
確率行列を持つには、遷移行列のすべての列の総和が
1
である必要があります。この条件は、
ある生物種が他のどの種にも食べられない場合には、満たされません。この場合、その生物種に対
応する列の要素は、すべてゼロになります。しかし、そのような列のすべてを
1/n
で置き換える
操作は、高コストとなります。
肝心なのは、変換行列と現在の確率ベクトルの乗算に、どの列も同じ量だけ寄与することに気付
くことです。つまり、これらの列を足すと、反復の乗算の結果に
1
つの値が加えられるのです。
どんな値かというと、
1/n
に、ぶら下がりノードに対応する
r
の要素を掛けたものです。このこと
は、ぶら下がりノードに対応する位置の要素の値が
1/n
で、それ以外の要素はゼロであるベクト
ルと、現在の反復のベクトル
r
の内積として表されます。
def power2(Trans, damping=0.85, max_iter=10**5):
n = Trans.shape[0]
dangling = (1/n) * np.ravel(Trans.sum(axis=0) == 0)
r0 = np.full(n, 1/n)
r = r0
for _ in range(max_iter):
rnext = (damping * (Trans @ r + dangling @ r) +
(1 - damping) / n) ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Start your free trial

You might also like

リーンエンタープライズ ―イノベーションを実現する創発的な組織づくり

リーンエンタープライズ ―イノベーションを実現する創発的な組織づくり

Jez Humble, Joanne Molesky, Barry O'Reilly, 角 征典, 笹井 崇司, Eric Ries
戦略的データサイエンス入門 ―ビジネスに活かすコンセプトとテクニック

戦略的データサイエンス入門 ―ビジネスに活かすコンセプトとテクニック

Foster Provost, Tom Fawcett, 竹田 正和, 古畠 敦, 瀬戸山 雅人, 大木 嘉人, 藤野 賢祐, 宗定 洋平, 西谷 雅史, 砂子 一徳, 市川 正和, 佐藤 正士
アイソモーフィックJavaScript

アイソモーフィックJavaScript

Jason Strimpel, Maxime Najim, 牧野 聡

Publisher Resources

ISBN: 9784873118604Other