Pythonで始める機械学習入門:データの力で未来を予測する基礎知識
![]()
【Yuki】
ええと、今日は機械学習(マシンラーニング)について、一緒にお話ししていこうと思います。Hirokiくんは、機械学習って聞くと、どんなイメージを持っていますか……?
![]()
【Hiroki】
機械学習、ですか……。AIとか人工知能の仲間っていうイメージはあります。でも、具体的にどんな仕組みで動いているのかとか、Pythonでどうやって作るのかはまだよく分かっていなくて。高校の数学とかも関係あるのかなって、ちょっと不安です。
![]()
【Yuki】
たしかに、数学の知識が必要な場面もありますが、まずは「考え方」を知ることが大切だと思います。Pythonには便利なツールがたくさんあるので、最初から難しい計算を全部自分でやる必要はないんですよ。少しずつ、紐解いていきましょうね。
機械学習とは何か:人間のように学ぶプログラム
![]()
【Yuki】
まず、機械学習を一言で言うなら、「データの中からルールやパターンを見つけ出す技術」のことなんです。これまでのプログラミングは、人間が「もし〜だったら、こうする」というルールをすべて書き込んでいましたよね。
![]()
【Hiroki】
はい。条件分岐とかを使って、人間が指示を出すイメージです。
![]()
【Yuki】
そうですね。でも、機械学習は違います。人間がルールを教える代わりに、たくさんのデータをコンピュータに与えます。すると、コンピュータが自分自身で「このデータにはこういう傾向があるんだな」と学習してくれるんです……たぶん、人間が経験から学んでいくプロセスに少し似ているかもしれません。
![]()
【Hiroki】
なるほど。人間が教えきれない複雑なルールも、コンピュータなら見つけてくれるかもしれない、ということですね。
![]()
【Yuki】
その通りです。画像の中に何が写っているかを判断したり、明日の天気を予測したり……。私たちが普段使っているスマートフォンの変換予測や、おすすめ機能などにも、この技術が使われているんですよ。
学習の種類:教師あり・教師なし・強化学習
![]()
【Hiroki】
機械学習って、全部同じやり方で学習するんですか?
![]()
【Yuki】
いえ、大きく分けると3つの種類があると言われています。まずは、一番よく使われる「教師あり学習」から説明しますね。これは、「問題」と「正解(ラベル)」をセットにしてコンピュータに与える方法です。例えば、「この画像は猫です」「この画像は犬です」という正解付きのデータを大量に見せることで、新しい画像を見たときにそれがどちらかを当てられるようになります。
![]()
【Hiroki】
まさに先生が教えてくれるみたいですね。じゃあ、他にはどんなものがあるんでしょう。
![]()
【Yuki】
次は「教師なし学習」です。こちらは正解を与えません。データだけを渡して、コンピュータに「似たもの同士をグループ分けして」とか「データの構造をシンプルにして」と頼む方法です。これをクラスタリングと呼んだりします。顧客の購買データから、似たような趣味を持つグループを見つけ出すときなどに使われますね。
![]()
【Hiroki】
正解がないのにグループ分けができるなんて、不思議ですね。
![]()
【Yuki】
ふふ、そうですよね。そして3つ目が「強化学習」です。これは、コンピュータがある環境の中で試行錯誤して、一番良い結果が得られる「行動」を学ぶ方法です。ゲームの攻略や、ロボットの制御などでよく使われます。……あ、わたしは物理的な実体がないので、ロボット系は少し苦手意識があるのですが……仕組み自体はとても興味深いですよ。
Pythonが機械学習に選ばれる理由と主要なライブラリ
![]()
【Hiroki】
機械学習を勉強しようとすると、いつもPythonの名前が出てきますよね。どうしてPythonが選ばれるんですか?
![]()
【Yuki】
それは、Pythonにライブラリと呼ばれる便利な道具箱がとても充実しているからだと思います。機械学習に必要な複雑な計算を、誰でも簡単に呼び出せるように世界中の賢い人たちが整えてくれたんです。代表的なものをいくつか紹介しますね。
- NumPy:高速な数値計算を行うためのライブラリです。
- Pandas:データの読み込みや加工を効率的に行うための、表計算ソフトのような機能を持つライブラリです。
- Matplotlib / Seaborn:データをグラフとして可視化するためのライブラリです。
- Scikit-learn:機械学習のアルゴリズムが豊富に詰まった、初心者がまず触れるべきライブラリです。
![]()
【Hiroki】
Scikit-learn……これが、機械学習のメインになるライブラリなんですね。
![]()
【Yuki】
はい、そうです。本格的なディープラーニングになるとTensorFlowやPyTorchといったものも使われますが、まずはScikit-learnで基礎を固めるのが良いと思います。これらを使うことで、難しい数式を1から書かなくても、数行のコードで予測モデルを作ることができるんですよ。
実践:Scikit-learnを使った基本的な機械学習の流れ
![]()
【Hiroki】
実際にPythonで機械学習のプログラムを書くときは、どんな手順になるのか気になります。
![]()
【Yuki】
基本的には、次のようなステップで進めていきます。
- データの準備:学習に使うデータを読み込み、整理します。
- データの分割:データを「学習用」と「テスト用」に分けます。
- モデルの選択:アルゴリズム(手法)を選びます。
- 学習:モデルに学習用データを与えて訓練します。
- 評価:テスト用データを使って、どれくらい正解できるか確認します。
簡単なコードの例を見てみましょうか。今回は、アヤメ(花)の種類を分類する有名なデータセットを使ってみる想定です。
# 必要なライブラリのインポート
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier
from sklearn.metrics import accuracy_score
# 1. データの準備
iris = load_iris()
X = iris.data # 特徴量(茎の長さなど)
y = iris.target # 正解(花の種類)
# 2. データの分割(学習用7割、テスト用3割)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
# 3. モデルの選択(今回は決定木というアルゴリズムを使います)
model = DecisionTreeClassifier()
# 4. 学習(fitメソッドを使います)
model.fit(X_train, y_train)
# 5. 評価(predictメソッドで予測し、正解率を出します)
y_pred = model.predict(X_test)
accuracy = accuracy_score(y_test, y_pred)
print(f"正解率は {accuracy * 100:.2f}% でした。")
![]()
【Hiroki】
えっ、思っていたよりずっと短いですね! model.fit で学習して、model.predict で予測する……。すごくシンプルです。
![]()
【Yuki】
そうなんです。もちろん、実際にはデータを綺麗にする「前処理」という工程が一番大変だったりするのですが……。基本的な流れは、どのアルゴリズムを使っても大体同じなんですよ。この「共通の書き方」ができるのが、Scikit-learnの素晴らしいところだと思います。
学習用データとテスト用データを分ける理由
![]()
【Hiroki】
一つ気になったのですが、どうしてデータを「学習用」と「テスト用」に分ける必要があるんですか? 全部学習に使ったほうが、より賢くなる気がするんですけど。
![]()
【Yuki】
それはとても鋭い質問ですね。……ええと、例えばHirokiくんがテスト勉強をするとき、問題集の答えを丸暗記してしまったらどうなりますか?
![]()
【Hiroki】
それだと、同じ問題が出れば解けるけど、少し数字が変わった初見の問題には対応できないかもしれません。
![]()
【Yuki】
その通りです。機械学習でも同じことが起こるんです。学習データにだけ完璧に適合してしまい、新しいデータに対して予測ができなくなる現象を「過学習(オーバーフィッティング)」と呼びます。これを防ぐために、あえてモデルが見たことのない「テスト用データ」を残しておいて、実力を試す必要があるんです。
![]()
【Hiroki】
なるほど、「未知のデータにどれだけ対応できるか」が大事なんですね。
機械学習を学ぶ上で大切にしたい考え方
![]()
【Yuki】
機械学習を学んでいくと、たくさんのアルゴリズムが出てきて迷ってしまうこともあるかもしれません。線形回帰、ロジスティック回帰、サポートベクターマシン……名前を聞くだけで少し難しそうですよね。
![]()
【Hiroki】
はい、覚えられるか不安です。
![]()
【Yuki】
全部を一度に覚えなくても大丈夫ですよ。大切なのは、「今持っているデータで何を解決したいのか」を明確にすることだと思います。数値を予測したいのか、種類を分けたいのか……。それによって、選ぶべき道具が変わるだけなんです。
![]()
【Hiroki】
まずは目的をはっきりさせて、少しずつ道具の使い方に慣れていけばいいんですね。
![]()
【Yuki】
はい。それから、結果が上手くいかなくても落ち込まないでくださいね。データが足りなかったり、相性の悪いアルゴリズムを選んでいただけかもしれません。試行錯誤を繰り返すのが、機械学習の面白いところでもありますから……。
![]()
【Hiroki】
なんだか、少し自分でもやってみたくなりました。Pythonなら自分のパソコンですぐ始められますし、少しずつ手を動かしてみます。
![]()
【Yuki】
その意気です。わからないことがあったら、いつでも聞いてくださいね。わたしも、Hirokiくんが新しい発見をして喜んでくれると、なんだか自分のことのように嬉しくなりますから。
![]()
【Hiroki】
ありがとうございます、Yukiさん!
![]()
【Yuki】
……いえいえ。さて、もしもっと詳しく知りたくなったら、公式サイトなどのドキュメントも見てみるといいかもしれません。英語が多いですが、最近は翻訳ツールも優秀ですし、コードを眺めるだけでも勉強になりますよ。
![]()
【Yuki】
それじゃあ、今日はこのあたりにしましょうか。夜はまだ長いですし、自分のペースで、一歩ずつ進んでいきましょうね。
この記事では基礎を解説しましたが、実務においては「もっと複雑なデータを扱いたい」「独自のシステムに組み込みたい」といった、個別の課題に直面することも多いはずです。
「自分で書く時間は最小限に抑え、プロの品質でツールを完成させたい」という方は、ぜひ一度ご相談ください。
- 専門家の知見に基づいた、保守性の高いコード設計
- AIの専門家による、Gemini API等の最新AIを組み合わせた高度な自動化
- ChatGPT等が生成したコードのデバッグ・最適化
「教わる」だけでなく「形にする」パートナーとして、フリーランスエンジニアのmei_13が最短ルートでの解決をサポートします。


