プログラミング-Python

Pythonでベイズ因子分析

書籍「ベイズ信号処理(関原 謙介)」の「第10章 数値実験」の計算例をPythonで実行しました.問題設定やアルゴリズムについては書籍を参照してください.ベイズ信号処理 ―信号・ノイズ・推定をベイズ的に考える―作者:関原 謙介共立出版Amazon出版社のページ…

Pythonでスパースベイズ

書籍「ベイズ信号処理(関原 謙介)」の「第10章 数値実験」の計算例をPythonで実行しました.問題設定やアルゴリズムについては書籍を参照してください.ベイズ信号処理 ―信号・ノイズ・推定をベイズ的に考える―作者:関原 謙介共立出版Amazon出版社のページ…

PythonでEMアルゴリズム(線形正規モデル・L2正則化)

書籍「ベイズ信号処理(関原 謙介)」の「第10章 数値実験」の計算例をPythonで実行しました.問題設定やアルゴリズムについては書籍を参照してください.ベイズ信号処理 ―信号・ノイズ・推定をベイズ的に考える―作者:関原 謙介共立出版Amazon出版社のページ…

Pythonで回転行列

回転行列をnumpyで実装します.回転行列については以下の記事を参照してください. 回転行列(2次元) - Notes_JP 2次元Python (numpy) import numpy as np def rot(vec, theta): vec = vec.reshape(-1, 1) cos, sin = np.cos(theta), np.sin(theta) R = np.…

Pythonの切り捨て除算演算と剰余演算

POINT x//yはfloor(x/y)と思えばOK. x%yはmod yで,yと同符号になる. ドキュメント 負の数に対する演算 参考文献/記事 ドキュメント6. 式 (expression) — Python 3.12.1 ドキュメント //(切り捨て除算: floor division):floor関数と同じ. 整数の切り捨て…

FFTの結果を手計算の結果と比較するには?

POINT FFTと手計算したフーリエ変換を比較する方法について. $T_{\mathrm{s}}$をサンプリング周期とするとき,手計算と比較すべきは「FFTの結果×$T_{\mathrm{s}}$」と「IFFTの結果 / $T_{\mathrm{s}}$」である. numpy.fftを使って,ガウス関数のFFTと手計…

主成分分析(PCA)

【関連記事】 主成分回帰(PCR)・部分最小二乗法(PLS) - Notes_JP 主成分分析(PCA)とは あらすじ 考え方(分散の最大化) 考え方(対角化) 元データの分解 データ行列を使った表現 特異値分解との関係 参考文献 主成分分析(PCA)とはあらすじ1回の測…

主成分回帰(PCR)と部分最小二乗法(PLS)の導出について

POINT PCAとPLSの導出に関する計算メモ. 【関連記事】 主成分分析(PCA) - Notes_JP 次の書籍の計算メモです.スモールデータ解析と機械学習作者:藤原 幸一オーム社Amazon 用語 PCR - 主成分回帰 PLS - 部分最小二乗法 PLS1 - 目的変数が1つの場合 Python…

正弦波のFFT (numpy.fft)

POINT sinのFFT (DFT) と DTFT,連続フーリエ変換の結果を比較する. numpy.fftの使い方を整理する. numpy.fftを正弦波で試したのでメモ. Discrete Fourier Transform (numpy.fft) — NumPy v2.0 Manual sinの(連続)フーリエ変換 sinのFFT (numpy.fft) ラ…

偏角でソート

与えられた点の集合を,偏角(あるいは原点と各点を通る直線の傾き)によってソートすることを考えます.まず,傾き(y / x)や偏角(atan2)を計算した上でソートすることが考えられます.しかし,この方法では,誤差によって正しくソートできない可能性が…

PythonでUnscented Kalman Filter (UKF)

以下の書籍の例をPythonで試しました.カルマンフィルタの基礎作者:足立修一,丸田一郎東京電機大学出版局Amazon【関連記事】 Pythonで拡張カルマンフィルタ - Notes_JP Unscented Kalman Filter (UKF) numpyによる実装 物体の落下運動(拡張カルマンフィルタ…

Pythonで拡張カルマンフィルタ

以下の書籍の例をPythonで試しました. また,拡張カルマンフィルタを使うと,(当然)線形カルマンフィルタの例も計算できることを確かめます.カルマンフィルタの基礎作者:足立修一,丸田一郎東京電機大学出版局Amazon【関連記事】 PythonでUnscented Kalma…

Python-可変長引数を持つ関数を積分する

POINT 動的に変数の数が変わる関数を「定義」する方法. 動的に変数の数が変わる関数を「積分」する方法. 思いついた方法をメモしておきます. 他にもっと良い方法があるかもしれません.ぜひ教えて下さい! やりたいこと 例1:1変数関数を掛け合わせる 可…

Pythonの「クラス」で遊ぶ:Wikipediaの球Bessel関数のグラフを描画

Wikipediaの球Bessel関数のグラフ(Spherical Bessel functions: jn, yn (Wikipedia))を描きます.クラスを使う必要はないのですが,あえてできるだけクラスを使ったコードで遊んでみました.クラスの簡単な使い方と同時に,キーワード可変長変数(**kwargs…

Python matplotlib animationで遊ぶ

POINT Pythonでアニメーションを作成する方法. 数値計算の結果の描画などに利用できる. 公開されているサンプルコードを少しいじって,挙動を確認した. Pythonでアニメーションを作成できることを知りました.二重振り子の微分方程式を解き,その運動をア…

Python(SciPy)で単振り子

POINT 単振り子の厳密解とPython(SciPy)の計算結果を比較する. 厳密解の導出を解説する. 数値計算の妥当性を確認するために,2通りの方法 常微分方程式をSciPy(odeint, ode, solve_ivp)を用いて解いたものをプロットする方法 厳密解を楕円積分・楕円関数を…

PythonでBloombergのグラフを再現

POINT Bloombergの「TOPIXと外国人投資家の売買動向のグラフ」を再現した. 以前の記事のプログラムを少し書き換えるだけで作成が可能. 毎週金曜日を目盛りにする方法がポイント. イントロ 結果 イントロBloombergの記事で,外国人投資家が12週ぶり買い越…

【Python】Matplotlibで2軸グラフ(折れ線グラフ+棒グラフ)

POINT Matplotlibで「折れ線グラフ」と「棒グラフ」の2軸グラフを作成した.横軸を日付にするには工夫が必要. Excelで作成したグラフと同じものを「簡単に」作成することができた. pandasでは階差や移動和などを求める関数が用意されている. 手っ取り早く…

外国人投資家動向と日経平均株価の関係を可視化

POINT 外国人投資家の売買動向による,日経平均株価への影響をPythonとExcelで可視化した. 週刊ダイヤモンドの図(3ヶ月単位)の再現に加え,1週間単位,1ヶ月単位でもプロットした. JPXで提供しているデータの最小単位である「1週間」のプロットでも,日…