keisukeのブログ

***乱雑です!自分用のメモです!*** 統計や機械学習の勉強と、読み物を書く練習と、備忘録用のブログ

scipy.stats のパラメータ loc と scale について

scipy.stats の各種オブジェクトには locおよびscale というパラメータがあります.

これらは結構混乱のもとなので,(自分向けに)まとめてみました.

任意の標準的な分布  P があるとき,
パラメータ loc=mu, scale=sigma と指定することで,
 \frac{x-\mu}{\sigma} P にしたがうようになる.

具体的には,例えば正規分布なら,scipy.stats.norm(loc=mu, scale=sigma) とすると, 確率変数  \frac{x-\mu}{\sigma}標準正規分布にしたがう. よって,もとの  x がどうなるかというと,計算してみるとこの場合  \text{N}(\mu, \sigma^{2}) となる. つまり平均  \mu,分散  \sigma^{2} なる正規分布である.

 \chi^{2}分布なら,scipy.stats.chi2(df=n, loc=mu, scale=sigma)とすると, 確率変数  \frac{x-\mu}{\sigma} が自由度nの \chi^{2}分布に従う. よって,もとの  x がどうなるかというと,自由度nの \chi^{2}分布に従う確率変数を  \sigma 倍して  \mu を足したものとなる.

【numpy】viewとcopy

配列のviewとは、もとの配列と同じデータを指している。 一方、copyは、もとの配列と同じデータのコピーを指している。

つまり、配列aviewであるvが存在するとして、vの要素を書き換えるとaの値も同時に書き換わる。 しかし、acopyであるcの要素を書き換えてもaの値は影響を受けない。

例えば、

続きを読む

NumPyから最高のパフォーマンスを得る方法

2018/12/27 追記

この記事はかなり昔の情報が混じっている可能性があります。 元の記事にもいくつか修正が入っているようですが、この翻訳記事では特に修正を実施していません。ご注意ください。 正確な情報は元記事を参照してください。

記事

この記事の和訳です。
色々間違っている可能性があるのでご注意ください。


NumPyPythonの科学計算ソフトフェア群の基礎となるものです。 NumPyはndarrayというベクトル計算に最適化された特別なデータ構造を提供します。 このオブジェクトは、科学数値計算の中の多くのアルゴリズムの核となっています。

特に計算がひとつの命令で多くのデータを操作する (SIMD) パラダイムに沿っている時、Numpy array (配列)を使うことでネイティブなPythonよりもかなりのパフォーマンスの高速化が達成できます。 しかし、最適化されていないNumPyのコードを何気なく書いてしまうこともありえます。

この記事では、あなたが最適化されたNumPyのコードを書くことを助けるいくつかのトリックを紹介します。 時間とメモリを節約するために、不必要な配列のコピーを避ける方法から見ていきましょう。 そのために、NumPyの内部に分け入る必要があるでしょう。

続きを読む

scipy.stats - scipyの統計関数群のAPI

scipyにはstatsという統計関数をまとめたモジュールがあります. statsにはいろいろな統計関数が用意されていますが,APIは統一されていますので,それについてちょっとまとめてみます.

続きを読む

【Python】 progressbar

進捗を示すためにshell上にプログレスバーを表示したいことがよくあります.

50% (200 of 400) |############            |

こんなやつです.

Pythonでも,重い処理をforループで回すときに欲しくなります. 当然同じことを考える人がいるので,すでにパッケージがあります.

python progressbar」で検索して一番上に出てくるパッケージ(progressbar)はpython3に対応してない上,開発がだいぶ前に止まっているので,今回は別のパッケージ(progressbar2)を使います.

続きを読む