NumPyで紐解く、機械学習のレシピ帳:eriklindernoren/ML-From-Scratch


NumPyで紐解く、機械学習のレシピ帳:eriklindernoren/ML-From-Scratch

eriklindernoren/ML-From-Scratch

2025-09-05

五郎さん、今日は神保町で新しいプロジェクトの打ち合わせっすか? いやー、それにしても、五郎さんの目の前にあるそのGitHubリポジトリ、「eriklindernoren/ML-From-Scratch」、なんだか気になりますね。

「ん?なんだか腹が減ってきたな。いや、そうじゃなくて。この『ML-From-Scratch』ってやつ、一体何なんだ?」

ふふ、五郎さん、それはまさに今日の五郎さんの胃袋…じゃなくて、開発者の好奇心を刺激する素晴らしいリポジトリなんですよ!

五郎さんの心の声
「お、こいつは面白いな。まるで、知らない街の小料理屋に入った時のようなワクワク感だ。」

このリポジトリ、例えるなら、「機械学習のレシピを、材料から自分で作ってみる」ようなものなんです。普通、機械学習って、Scikit-learnとかTensorFlowとか、全部できあがった料理を注文する感覚じゃないですか。便利だけど、どうやって作られてるのか、材料は何なのか、よくわからない。

でも、この『ML-From-Scratch』は、それとは全然違う。

「なるほど。つまり、このリポジトリは、機械学習という料理の、一つ一つの材料、つまりNumPyだけで書かれた実装を、見せてくれるってことか。まるで、板前さんが目の前で魚を捌いてくれるように…」

そうです!五郎さん、まさにその通りです。

五郎さんの心の声
「ただ美味いだけの料理はもう飽きた。これからは、美味さの秘密を知りたい…」

このリポジトリは、ただ単にコードを写経するだけじゃない、深い学びがあります。

アルゴリズムの理解が深まる
ブラックボックスになっていた機械学習モデルの内部が、全部NumPyの配列操作として見えてきます。これはもう、料理の隠し味を知るようなもの。例えば、線形回帰の勾配降下法が、どうやって重みを更新しているのか、手で触れるように理解できます。

NumPyの腕前が上がる
NumPyは、データサイエンスの基本中の基本。このリポジトリのコードを読むことで、配列のブロードキャストやスライシングといった、NumPyの高度なテクニックを実戦的に学べます。これは、包丁の使い方を学ぶようなものですね。

既存ライブラリのデバッグ・チューニングに役立つ
「あれ? Scikit-learnのあのモデル、なぜか期待した結果が出ないな…」なんて時、このリポジトリで基礎的な実装を確認することで、問題の切り分けやパラメータ調整のヒントが見つかるかもしれません。

五郎さんの心の声
「さて、腹ごしらえの前に、まずはこの『ML-From-Scratch』という名の定食屋に、どうやって入るかだな…」

導入はめちゃくちゃシンプルです。

リポジトリをクローンする

git clone https://github.com/eriklindernoren/ML-From-Scratch.git
cd ML-From-Scratch

必要なライブラリをインストールする

pip install -r requirements.txt

これだけです! あとは、好きなモデルのディレクトリに入って、コードを読んで、動かしてみるだけ。

五郎さんの心の声
「この店の一番人気、線形回帰…いや、線形回帰定食か。よし、これを注文してみよう。」

supervised_learning/linear_regression.py を見てみましょう。 シンプルな線形回帰の実装なのに、こんなにスッキリしているのかと驚かされます。

# 一部抜粋
class LinearRegression():
    def __init__(self, n_iterations=100, learning_rate=0.001):
        self.n_iterations = n_iterations
        self.learning_rate = learning_rate
    
    def fit(self, X, y):
        # 重みとバイアスを初期化
        self.W = np.zeros(np.shape(X)[1])
        self.w0 = 0
        self.X, self.y = X, y

        # 勾配降下法
        for _ in range(self.n_iterations):
            y_pred = self.X.dot(self.W) + self.w0
            
            # 勾配を計算
            # ここが一番面白いところ。数式がそのままコードになってる!
            grad_W = -(2 / self.m) * (self.X.T.dot(self.y - y_pred))
            grad_w0 = -(2 / self.m) * np.sum(self.y - y_pred)
            
            # 重みを更新
            self.W -= self.learning_rate * grad_W
            self.w0 -= self.learning_rate * grad_w0

    def predict(self, X):
        return X.dot(self.W) + self.w0

五郎さんの心の声
「ふむ、なるほど。つまり、このgrad_Wってやつが、一番美味しくなるための隠し味、じゃなくて、最適な重みを求めるための道しるべってわけか…。」

そうなんです!このコードは、まさに数学的な概念が、生身のNumPyコードとして目の前に現れているんです。

五郎さん、このリポジトリは、機械学習という大海原を、自分の手漕ぎボートで進むための羅針盤です。

「よし、決めた。今日はこの『ML-From-Scratch』をじっくりと味わってみるか。腹は…まだ減ってるが、それどころじゃなくなってきたな。ふふ、まるで新しい街の路地裏に入り込んだみたいだ。この先には、一体どんな『味』が待っているんだろう…」


eriklindernoren/ML-From-Scratch




Transformerベースの物体検出RF-DETR: カスタムAIモデル開発を加速させる方法

最近、Roboflowが開発した「RF-DETR (Roboflow Detection TRansformer)」というモデルをプロジェクトで試してみたんです。これが本当にすごくて、物体検出とセグメンテーションの分野でSOTA(State-of-the-Art、最高水準)を達成しているのに、リアルタイム性も兼ね備えているという優れもの。


ソフトウェア開発を加速するDocsGPT:ハルシネーション回避で信頼度UP

DocsGPTは、あなたの持つドキュメントや知識ベースから、信頼性の高い情報を引き出すためのオープンソースツールです。よくある生成AIの課題である「ハルシネーション(AIが事実ではない情報を生成すること)」を避け、プライベートな情報源から正確な答えを導き出すことに特化しています。


OCRの魔法!Tesseractで画像からテキストを抽出する方法

一言で言うと、Tesseractは画像やPDFから文字を読み取ってテキストデータに変換してくれるオープンソースのツールです。まるで画像に書かれた文字を魔法のように抜き出して、編集可能なテキストにしてくれる、そんな「お値段以上」の働きをしてくれます。


AI-For-Beginnersで学ぶ、エンジニアのキャリアアップ

「microsoft/AI-For-Beginners」は、Microsoftが提供しているAI学習のための無料カリキュラムです。全24レッスン、12週間の構成で、初学者でも無理なくAIの基礎を学べるように設計されています。ソフトウェアエンジニアとしてAIを学ぶことは、以下のような多くのメリットがあります。


血液型占い風解説!AIエージェントのチームマネジメントツール「agent-squad」とは?

今回は、ソフトウェアエンジニアの視点から、ちょっと面白いツール「agent-squad」について、血液型占いの運勢みたいに、楽しく分かりやすく解説していきますね。全体運最高潮!まるで優秀なチームを瞬時に結成できる魔法の杖を手に入れたかのよう。これまで一人で抱え込んでいた複雑なタスクも、チームで分担することでサクサクこなせるようになります。特に、複数のAIを組み合わせて、まるで人間同士が話し合っているかのように協調させたい場面で、その真価を発揮します。


【エンジニア向け】OpenBB Financeで始めるデータ駆動型投資の冒険

夜が更け、モニターの光だけが部屋を照らす。あなたは今日もバグと格闘し、新しい技術を追い求めている。そんなあなたの前に現れたのは、謎めいたパッケージ「OpenBB Finance」。「投資調査を、誰もが、どこでも。」その言葉が示すのは、単なるライブラリではない。それは、複雑な金融の世界を解き明かすための、強力な武器となる予感だった。


AIがもたらす開発革命:Perplexicaで技術の海を航海せよ

これは、とあるソフトウェア開発チーム、「エボリューション・ワークス」の物語です。彼らはいつも新しい技術を探求し、より良いプロダクトを作ろうと奮闘していました。しかし、彼らの開発環境には、大きな課題がありました。それは「情報の断片化」です。新しいライブラリやフレームワークを使おうとすると、公式サイト、Stack Overflow、GitHubのissue、技術ブログなど、あちこちのサイトを巡回して情報を集めなければなりませんでした。まるで「宝探し」のようです。


ドラえもんの道具で解説!RD-Agentがもたらす開発革命

研究開発(R&D)を自動化してくれる、まさに「開発者版どこでもドア」とでもいうべきすごい技術なんです。「RD-Agent」は、AIを使ってAIの研究開発を自動化するためのツールです。まるで優秀なAIアシスタントがチームに入ってくれるようなイメージです。


キャンプでコント:LLMオーケストレーションの苦労を解消する strans-agents/sdk-python 入門

皆さん、キャンプに来ています!テントを立てるのも、火を起こすのも、楽しいけれど結構手間がかかりますよね。AIエージェントを作るのも同じなんです。モデルを選んで、プロンプトを書いて、ツールを組み合わせて. ..「あー、またエラーだ. ..」となりがち。


新米エンジニアよ、AIの基礎を叩き込め!「ML-For-Beginners」で差をつけろ!

今日はな、テメーらみたいなピヨピヨの新入りでも、一丁前にAIとか機械学習とか言えるようになっちまう、とっておきのモンを紹介してやるぜ!それがこれだ、どーん!microsoft/ML-For-Beginners [python, education