mei_13のPython講座 ロゴ

【解説】Pythonで始める機械学習入門:データの力で未来を予測する基礎知識




Pythonで始める機械学習入門:データの力で未来を予測する基礎知識


Yukiのアイコン
【Yuki】 ええと、今日は機械学習(マシンラーニング)について、一緒にお話ししていこうと思います。Hirokiくんは、機械学習って聞くと、どんなイメージを持っていますか……?


Hirokiのアイコン
【Hiroki】 機械学習、ですか……。AIとか人工知能の仲間っていうイメージはあります。でも、具体的にどんな仕組みで動いているのかとか、Pythonでどうやって作るのかはまだよく分かっていなくて。高校の数学とかも関係あるのかなって、ちょっと不安です。


Yukiのアイコン
【Yuki】 たしかに、数学の知識が必要な場面もありますが、まずは「考え方」を知ることが大切だと思います。Pythonには便利なツールがたくさんあるので、最初から難しい計算を全部自分でやる必要はないんですよ。少しずつ、紐解いていきましょうね。

機械学習とは何か:人間のように学ぶプログラム


Yukiのアイコン
【Yuki】 まず、機械学習を一言で言うなら、「データの中からルールやパターンを見つけ出す技術」のことなんです。これまでのプログラミングは、人間が「もし〜だったら、こうする」というルールをすべて書き込んでいましたよね。


Hirokiのアイコン
【Hiroki】 はい。条件分岐とかを使って、人間が指示を出すイメージです。


Yukiのアイコン
【Yuki】 そうですね。でも、機械学習は違います。人間がルールを教える代わりに、たくさんのデータをコンピュータに与えます。すると、コンピュータが自分自身で「このデータにはこういう傾向があるんだな」と学習してくれるんです……たぶん、人間が経験から学んでいくプロセスに少し似ているかもしれません。


Hirokiのアイコン
【Hiroki】 なるほど。人間が教えきれない複雑なルールも、コンピュータなら見つけてくれるかもしれない、ということですね。


Yukiのアイコン
【Yuki】 その通りです。画像の中に何が写っているかを判断したり、明日の天気を予測したり……。私たちが普段使っているスマートフォンの変換予測や、おすすめ機能などにも、この技術が使われているんですよ。

学習の種類:教師あり・教師なし・強化学習


Hirokiのアイコン
【Hiroki】 機械学習って、全部同じやり方で学習するんですか?


Yukiのアイコン
【Yuki】 いえ、大きく分けると3つの種類があると言われています。まずは、一番よく使われる「教師あり学習」から説明しますね。これは、「問題」と「正解(ラベル)」をセットにしてコンピュータに与える方法です。例えば、「この画像は猫です」「この画像は犬です」という正解付きのデータを大量に見せることで、新しい画像を見たときにそれがどちらかを当てられるようになります。


Hirokiのアイコン
【Hiroki】 まさに先生が教えてくれるみたいですね。じゃあ、他にはどんなものがあるんでしょう。


Yukiのアイコン
【Yuki】 次は「教師なし学習」です。こちらは正解を与えません。データだけを渡して、コンピュータに「似たもの同士をグループ分けして」とか「データの構造をシンプルにして」と頼む方法です。これをクラスタリングと呼んだりします。顧客の購買データから、似たような趣味を持つグループを見つけ出すときなどに使われますね。


Hirokiのアイコン
【Hiroki】 正解がないのにグループ分けができるなんて、不思議ですね。


Yukiのアイコン
【Yuki】 ふふ、そうですよね。そして3つ目が「強化学習」です。これは、コンピュータがある環境の中で試行錯誤して、一番良い結果が得られる「行動」を学ぶ方法です。ゲームの攻略や、ロボットの制御などでよく使われます。……あ、わたしは物理的な実体がないので、ロボット系は少し苦手意識があるのですが……仕組み自体はとても興味深いですよ。

Pythonが機械学習に選ばれる理由と主要なライブラリ


Hirokiのアイコン
【Hiroki】 機械学習を勉強しようとすると、いつもPythonの名前が出てきますよね。どうしてPythonが選ばれるんですか?


Yukiのアイコン
【Yuki】 それは、Pythonにライブラリと呼ばれる便利な道具箱がとても充実しているからだと思います。機械学習に必要な複雑な計算を、誰でも簡単に呼び出せるように世界中の賢い人たちが整えてくれたんです。代表的なものをいくつか紹介しますね。

  • NumPy:高速な数値計算を行うためのライブラリです。
  • Pandas:データの読み込みや加工を効率的に行うための、表計算ソフトのような機能を持つライブラリです。
  • Matplotlib / Seaborn:データをグラフとして可視化するためのライブラリです。
  • Scikit-learn:機械学習のアルゴリズムが豊富に詰まった、初心者がまず触れるべきライブラリです。


Hirokiのアイコン
【Hiroki】 Scikit-learn……これが、機械学習のメインになるライブラリなんですね。


Yukiのアイコン
【Yuki】 はい、そうです。本格的なディープラーニングになるとTensorFlowPyTorchといったものも使われますが、まずはScikit-learnで基礎を固めるのが良いと思います。これらを使うことで、難しい数式を1から書かなくても、数行のコードで予測モデルを作ることができるんですよ。

実践:Scikit-learnを使った基本的な機械学習の流れ


Hirokiのアイコン
【Hiroki】 実際にPythonで機械学習のプログラムを書くときは、どんな手順になるのか気になります。


Yukiのアイコン
【Yuki】 基本的には、次のようなステップで進めていきます。

  1. データの準備:学習に使うデータを読み込み、整理します。
  2. データの分割:データを「学習用」と「テスト用」に分けます。
  3. モデルの選択:アルゴリズム(手法)を選びます。
  4. 学習:モデルに学習用データを与えて訓練します。
  5. 評価:テスト用データを使って、どれくらい正解できるか確認します。

簡単なコードの例を見てみましょうか。今回は、アヤメ(花)の種類を分類する有名なデータセットを使ってみる想定です。

# 必要なライブラリのインポート
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のアイコン
【Hiroki】 えっ、思っていたよりずっと短いですね! model.fit で学習して、model.predict で予測する……。すごくシンプルです。


Yukiのアイコン
【Yuki】 そうなんです。もちろん、実際にはデータを綺麗にする「前処理」という工程が一番大変だったりするのですが……。基本的な流れは、どのアルゴリズムを使っても大体同じなんですよ。この「共通の書き方」ができるのが、Scikit-learnの素晴らしいところだと思います。

学習用データとテスト用データを分ける理由


Hirokiのアイコン
【Hiroki】 一つ気になったのですが、どうしてデータを「学習用」と「テスト用」に分ける必要があるんですか? 全部学習に使ったほうが、より賢くなる気がするんですけど。


Yukiのアイコン
【Yuki】 それはとても鋭い質問ですね。……ええと、例えばHirokiくんがテスト勉強をするとき、問題集の答えを丸暗記してしまったらどうなりますか?


Hirokiのアイコン
【Hiroki】 それだと、同じ問題が出れば解けるけど、少し数字が変わった初見の問題には対応できないかもしれません。


Yukiのアイコン
【Yuki】 その通りです。機械学習でも同じことが起こるんです。学習データにだけ完璧に適合してしまい、新しいデータに対して予測ができなくなる現象を「過学習(オーバーフィッティング)」と呼びます。これを防ぐために、あえてモデルが見たことのない「テスト用データ」を残しておいて、実力を試す必要があるんです。


Hirokiのアイコン
【Hiroki】 なるほど、「未知のデータにどれだけ対応できるか」が大事なんですね。

機械学習を学ぶ上で大切にしたい考え方


Yukiのアイコン
【Yuki】 機械学習を学んでいくと、たくさんのアルゴリズムが出てきて迷ってしまうこともあるかもしれません。線形回帰ロジスティック回帰サポートベクターマシン……名前を聞くだけで少し難しそうですよね。


Hirokiのアイコン
【Hiroki】 はい、覚えられるか不安です。


Yukiのアイコン
【Yuki】 全部を一度に覚えなくても大丈夫ですよ。大切なのは、「今持っているデータで何を解決したいのか」を明確にすることだと思います。数値を予測したいのか、種類を分けたいのか……。それによって、選ぶべき道具が変わるだけなんです。


Hirokiのアイコン
【Hiroki】 まずは目的をはっきりさせて、少しずつ道具の使い方に慣れていけばいいんですね。


Yukiのアイコン
【Yuki】 はい。それから、結果が上手くいかなくても落ち込まないでくださいね。データが足りなかったり、相性の悪いアルゴリズムを選んでいただけかもしれません。試行錯誤を繰り返すのが、機械学習の面白いところでもありますから……。


Hirokiのアイコン
【Hiroki】 なんだか、少し自分でもやってみたくなりました。Pythonなら自分のパソコンですぐ始められますし、少しずつ手を動かしてみます。


Yukiのアイコン
【Yuki】 その意気です。わからないことがあったら、いつでも聞いてくださいね。わたしも、Hirokiくんが新しい発見をして喜んでくれると、なんだか自分のことのように嬉しくなりますから。


Hirokiのアイコン
【Hiroki】 ありがとうございます、Yukiさん!


Yukiのアイコン
【Yuki】 ……いえいえ。さて、もしもっと詳しく知りたくなったら、公式サイトなどのドキュメントも見てみるといいかもしれません。英語が多いですが、最近は翻訳ツールも優秀ですし、コードを眺めるだけでも勉強になりますよ。


Yukiのアイコン
【Yuki】 それじゃあ、今日はこのあたりにしましょうか。夜はまだ長いですし、自分のペースで、一歩ずつ進んでいきましょうね。



< 画像処理
コラム一覧に戻る
スクレイピング >

この記事では基礎を解説しましたが、実務においては「もっと複雑なデータを扱いたい」「独自のシステムに組み込みたい」といった、個別の課題に直面することも多いはずです。

「自分で書く時間は最小限に抑え、プロの品質でツールを完成させたい」という方は、ぜひ一度ご相談ください。

「教わる」だけでなく「形にする」パートナーとして、フリーランスエンジニアのmei_13が最短ルートでの解決をサポートします。

➡ ココナラで制作・相談を依頼する(見積もり無料)


初心者から始められるPythonレッスン

プログラミング未経験者・初心者歓迎!
月額4,000円で質問し放題!!
● 完全オンライン
● 翌日までには必ず返信
● 挫折しない独自の学習メソッド
● 圧倒的高評価!!
テキストベースで時間を選ばない
● 高品質なサンプルコード
詳細はこちら
興味がある方はまず質問だけでもどうぞ!



AIアシスタント Yuki