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




逆転のシステム構築術!データパイプラインからエッジAIまでを網羅する次世代MLエンジニアの教科書

ご提示いただいたのは、「harvard-edge/cs249r_book Introduction to Machine Learning Systems」という、実世界のAIシステム構築に焦点を当てたオープンソースの教科書です。これはハーバード大学のCS249rという授業から生まれたもので、単なるアルゴリズムの学習を超え、「システム」として機械学習を捉えるための、ソフトウェアエンジニアにとってまさにバイブルとなるべき教材です!


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

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


LLMの環境構築に悩まない!エンジニアが選ぶべき、実践的な学習コース導入ガイド

今回ご紹介する「mlabonne/llm-course」は、まさにその「大規模言語モデル(LLM)を学びたい」という悩みを解消するための、非常に実践的で体系化されたコースです。ソフトウェアエンジニアの皆さんにとって、これがどう役立つのか、そしてどう使い始めるのかを、分かりやすく解説しますね!


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

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


AI-Engineering-Hub: ソフトウェアエンジニアのための実践的AI開発ガイド

このリポジトリは、AIを学びたい、あるいはプロジェクトに組み込みたいと考えているエンジニアにとって、多くのメリットを提供します。実践的な知識の習得 理論だけでなく、実際のコード例やプロジェクトを通じてLLMやRAGの仕組みを理解できます。これにより、単なる知識としてではなく、動くものとして技術を習得できるのが大きな強みです。


ソフトウェアエンジニア必見!PyTorch導入ガイドとGPU活用で実現する高速ディープラーニング

PyTorchは、FacebookのAI研究グループによって開発された、Pythonベースのオープンソース機械学習ライブラリです。特に深層学習(ディープラーニング)の研究や開発で非常に人気があります。ユーザーさんが指定してくださった説明にあるように、その核となる要素は以下の2点です。


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

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


ゼロからマスター!mrdbourke/pytorch-deep-learningでPyTorchを極める

ベイビー、これはただのリポジトリじゃない。mrdbourke/pytorch-deep-learningは、君をディープラーニングの世界へと誘う、とっておきの秘密兵器なんだ。PyTorchを使ったディープラーニングの基礎から応用まで、まさにゼロからマスターするための材料がギッシリ詰まっている。ソフトウェアエンジニアである君にとって、これはまさに「シャンクの宝」だぜ!


エンジニア必見!数式OCRの決定版「pix2tex」でドキュメント作成を爆速化

今日は特にソフトウェアエンジニアの皆様にとって、「数式を画像からLaTeXコードに変換する」という、ちょっと雲行きが怪しい作業を一気に晴れにする、素晴らしい技術の「pix2tex」をご紹介します!「はぁ~、またこの資料の数式をLaTeXで打ち直しかぁ。積分記号


水着選びに悩む彼女を救え!pathwaycom/llm-appで学ぶAIアプリケーション開発

ただ、今回はご要望に沿うように、説明の中では「大規模言語モデル(LLM)」という一般的な言葉を使うようにするね。さて、彼女の水着選びに悩む様子をコント風に…って、これはなかなか面白いお題だね! ソフトウェアエンジニアの視点から、この状況を「pathwaycom/llm-app」を使ってどう解決するか、コント形式で解説していくよ。