Manimでデータサイエンス系アルゴリズムのアニメーション作った
講義資料として活用するために、Manimを使ってデータサイエンス・機械学習系アルゴリズムのアニメーションをいろいろ作成してみました。
コードはGemini 2.5 Proに生成させたものを、調整して仕上げています(ところどころ妥協して文字が被ったりしています)。
Manimは3Blue1Brownの動画などでも使われている、Pythonベースの数学向けアニメーションライブラリです。
プログラム GitHub: ctxzz/manim-ds
目次
アルゴリズム
線形回帰
勾配降下法による回帰直線の最適化の流れをアニメーションで表現しました。
ロジスティック回帰
シグモイド関数と決定境界の形成を、2つのパターンで可視化しています。
決定木
特徴量の条件分岐と決定境界の構築の様子を段階的に示しました。
ランダムフォレスト
複数の決定木を組み合わせるアンサンブル学習の動作を可視化しています。
K近傍法
距離ベースで予測を行うK近傍法の仕組みをアニメーション化しました。
K-means
クラスタの重心更新とクラスタリングの収束過程を視覚的に理解できるようにしました。
標準化・正規化
データのスケーリング処理(標準化と正規化)の変換効果を比較して表示しています。
標準化
正規化(Min-Max Scaling)
主成分分析
次元削減のプロセスと、主成分によるデータの投影結果をアニメーションで表現しました。
実装・実行について
スクリプトはPythonで記述しており、依存関係の管理には uv
を使っています。
基本的には以下のようにManimコマンドでシーンを指定して実行します。
uv run manim src/linear.py SimpleLinearRegression
動画は src/media/
以下に自動で生成されます。
ファイル名はManimのシーンクラス名に対応しています。
高解像度(1080p30fps)の場合は
src/media/videos/linear/1080p30/SimpleLinearRegression.mp4
のように出力されます。
低解像度の場合は -pql
オプションを付けて高速にプレビュー可能(480pで出力される)。
参考
- Manim Community - Manim公式コミュニティ
Discussion