スポンサーリンク

初心者でもできる!Pythonとscikit-learnで機械学習モデルを構築する方法

AI・機械学習

1. はじめに|機械学習ってなんだろう?

みなさん、「機械学習」って聞いたことありますか?

なんだか難しそうな名前ですよね。でも、実は私たちの身のまわりで、もうすでにたくさん使われているんです。

たとえば…

  • スマホで撮った写真の中から顔を自動で見つけてくれるカメラ
  • YouTubeやNetflixで「あなたにおすすめ」と出てくる動画
  • 翻訳アプリで日本語を英語に変換してくれる機能

これらは全部、機械学習という技術が使われています!

機械学習って、なにをしてるの?

かんたんに言うと、機械学習は「過去のデータからパターンを学んで、新しいデータを予測するしくみ」です。

たとえば、「赤い果物はリンゴ」「黄色い果物はバナナ」といった情報をたくさん集めて、そこから「じゃあこの新しい果物はどっちかな?」と判断するようなことができます。

このとき使う「過去の情報」を「学習データ」、新しく判断したい情報を「テストデータ」って呼びます。

機械学習には2つのパターンがある

機械学習には大きく分けて2つのタイプがあります。

タイプなにを予測する?
分類クラス(カテゴリ)果物がリンゴかバナナかを判別
回帰数値(連続した値)身長や年齢から体重を予測

この記事では、この中でも特に**「分類(ぶんるい)」**に注目して、Pythonで「花の種類」を予測するプログラムを一緒に作っていきます!




2. scikit-learnとは?Pythonで手軽に機械学習!

「機械学習っておもしろそうだけど、難しそう…」
そんなイメージ、ありませんか?

実はPythonには、専門的な知識がなくても手軽に機械学習ができるライブラリがあるんです!
その名前が 「scikit-learn(サイキットラーン)」

scikit-learnってなに?

scikit-learnは、機械学習のいろんな手法をかんたんに使えるようにまとめたツール箱みたいなものです。

たとえば、

  • 分類(りんご?バナナ?など)
  • 回帰(数値の予測)
  • クラスタリング(似たもの同士をグループ化)
  • モデルの評価(正解率など)
  • データの前処理(エンコーディングや標準化)

など、機械学習でよく使う機能がギュッとつまっています。

コードがめちゃくちゃシンプル!

scikit-learnの魅力は、なんといっても「コードが超シンプル」なこと!

学習と予測は、基本的にこの2ステップだけ:

model.fit(学習データ, 正解データ)   # 学習(fit)
model.predict(テストデータ) # 予測(predict)

このように、どんなモデルでも「fit」と「predict」という同じ関数で使えるので、モデルを入れ替えるのもカンタンなんです。

どんな人におすすめ?

scikit-learnはこんな人にぴったりです:

  • 機械学習に初めて触れる人
  • 数式より「実際に動くコード」が見たい人
  • Pythonの基礎は少しわかるけど、AIはこれから!という人

次は、scikit-learnに付属している「アヤメのデータセット」を使って、実際に分類モデルを作っていきますよ!




3. 今回使う「アヤメのデータセット」って?

さて、いよいよ実際にscikit-learnを使って、分類モデルを作っていきます。
でも、その前に「どんなデータを使うのか?」を知っておきたいですよね。

今回使うのは、機械学習入門の定番ともいえる**「アヤメのデータセット(Irisデータセット)」**です!

アヤメのデータってなに?

このデータセットには、3種類のアヤメ(花)の情報が記録されています。

  • setosa(セトサ)
  • versicolor(バーシカラー)
  • virginica(バージニカ)

それぞれの花について、以下の4つの特徴(数値データ)がまとめられています。

特徴量の名前説明
sepal lengthがく(外側の花びら)の長さ
sepal widthがくの幅
petal length花びらの長さ
petal width花びらの幅

これらの数値をもとに、「この花はどの種類?」と予測するのが今回の目的です。

データの構成

scikit-learnにはこのデータが最初から組み込まれているので、自分でファイルを用意する必要はありません。以下のようにコードを書くだけで簡単に読み込めます:

from sklearn.datasets import load_iris

iris = load_iris()
X = iris.data # 特徴量(4つの数値データ)
y = iris.target # 正解ラベル(0, 1, 2 のいずれか)

このとき、Xには「花の特徴(長さや幅)」が、yには「それがどのアヤメか(数字で分類)」が入ります。

※ ちなみに、0がsetosa、1がversicolor、2がvirginicaです。

なんでこのデータを使うの?

理由はとてもシンプル!

  • データがキレイで扱いやすい
  • ちょうどいい量(150件)
  • 特徴量もシンプルで視覚的にわかりやすい

そのため、機械学習の「はじめの一歩」にぴったりのデータセットなんです。




4. 機械学習モデルの作成ステップ

いよいよここから、Pythonを使った機械学習の実践に入っていきます!
やることはシンプルで、たったの5ステップです。


ステップ①:データを読み込もう

まずは、アヤメのデータをscikit-learnから読み込みます。

from sklearn.datasets import load_iris

iris = load_iris()
X = iris.data # 花の特徴(長さ・幅など)
y = iris.target # 花の種類(0, 1, 2)

これで X に特徴量(花びらやがくのサイズ)、y に正解データ(花の名前)が入ります。


ステップ②:データを分けよう(学習用とテスト用)

このまま全部使って学習すると、あとで予測の結果が正しいのか判断できません。
だから、「学習用(訓練データ)」と「テスト用(評価データ)」に分ける必要があります。

from sklearn.model_selection import train_test_split

X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size=0.2, random_state=42
)

ここでは、全体の80%を学習用、20%をテスト用にしています。
random_stateは「ランダムな分け方を毎回同じにする」ための設定です。


ステップ③:モデルを作って学習しよう!

ここが一番ワクワクするところ。
今回は「Random Forest(ランダムフォレスト)」という人気の分類モデルを使います。

from sklearn.ensemble import RandomForestClassifier

model = RandomForestClassifier(random_state=42)
model.fit(X_train, y_train)

これで、花の特徴と種類の関係を覚えるモデルが完成しました!


ステップ④:モデルに予測させてみよう!

さあ、学習が終わったら、テストデータを使って予測してみましょう。

y_pred = model.predict(X_test)

この y_pred に入っているのが、モデルが出した「花の種類」の予測結果です。


ステップ⑤:正解かどうかチェックしよう!

最後に、「モデルがどれだけ正しく予測できたか」をチェックします。

from sklearn.metrics import accuracy_score

accuracy = accuracy_score(y_test, y_pred)
print(f"正解率は:{accuracy * 100:.2f}%")

この結果が高ければ高いほど、「モデルがうまく学習できた」ということになります。
このアヤメのデータでは、およそ86%くらいの正解率が出ることが多いです!

ここまでが「機械学習の基本ステップ」になります。
Pythonとscikit-learnを使えば、こんなにシンプルなコードで機械学習が体験できちゃうんです!




5. 注意点とコツ|モデルづくりで気をつけたいポイント

ここまでで、「学習 → 予測 → 評価」の流れはバッチリですね!
でも、機械学習では思わぬところに落とし穴があることも…。
ここでは、初心者がつまずきやすいポイントを2つ紹介します!


コツ①:文字のデータには注意!数値に変換しよう

scikit-learnでは、基本的に「数値データ」しか扱えません。

たとえば「赤」「青」「緑」などの文字で表された色を、そのままモデルに渡すとエラーになります。
そんなときは、次のようにエンコーディングという方法で数値に変換します。

🔸 ラベルエンコーディング

文字に番号をつける方法。たとえば:

数値
0
1
2
from sklearn.preprocessing import LabelEncoder

le = LabelEncoder()
data['色'] = le.fit_transform(data['色'])

🔸 One-Hotエンコーディング

それぞれの文字を「フラグ化」する方法。

100
010
001

Pandasのget_dummies()でもできます:

pd.get_dummies(data['色'])

モデルによっては、どちらか一方でないとうまく動かないことがあります。たとえば、ランダムフォレストならラベルエンコーディングでもOKですが、線形回帰などではOne-Hotが必要になることもあります。


コツ②:データリークに要注意!

もうひとつ大事なのが、「データリーク(Leakage)」です。
これは、「本来使っちゃいけない情報をモデルが使っちゃっている」状態のこと。

たとえば…

アヤメのデータで、以下のような列があったとします:

花びらの長さ花びらの幅正解ラベル(花の種類)インデックス番号
1.40.2setosa0
4.51.5versicolor1

この「インデックス番号」が実は特徴量に混ざっていたら…
モデルは「花びらの形」ではなく、「インデックス番号」で花の種類を当ててしまうかもしれません!

そうなると、見かけの精度は高くても、実際にはまったく役に立たないモデルになってしまいます。

✅ 対策

  • 特徴量に「正解を直接教えてしまうような列」が入っていないか、よく確認しましょう。
  • モデルに渡す前に、データの中身をhead()info()でチェックすると安心です。

機械学習はコードを書くだけじゃなく、データを正しく扱う力もとっても大切。
今回紹介した「エンコーディング」と「データリーク対策」は、初心者が最初に身につけたいスキルです。




6. まとめ|Pythonで機械学習の第一歩を踏み出そう!

おつかれさまでした!
ここまで読んでいただけたあなたは、Pythonを使った機械学習の基本ステップをしっかり理解できています。

もう一度、今回の流れをふり返ってみましょう:

✅ 機械学習って?

  • データからパターンを学習し、新しいデータを予測する技術
  • 分類(クラスの予測)と回帰(数値の予測)があるよ!

✅ ライブラリ「scikit-learn」が超便利!

  • fit()で学習、predict()で予測のシンプル設計
  • 分類や回帰など、いろんなモデルを手軽に使える

✅ アヤメのデータで体験!

  • 特徴量(花びらやがくのサイズ)と正解ラベル(花の種類)を使ってモデルを作成
  • ランダムフォレストを使って、約86%の正解率に!

✅ 注意点もチェック

  • 文字データは数値に変換(エンコーディング)
  • モデルに余計な情報が入らないように注意(データリーク)

最初はむずかしそうに見えた機械学習ですが、実際にやってみると「意外とシンプル!」と思えたのではないでしょうか?

Pythonとscikit-learnを使えば、専門知識がなくても本格的なAIの世界に一歩踏み出すことができます。

次のステップでは、他のモデルに挑戦したり、自分でデータを集めて分析したり、可能性は無限大!
ぜひこの記事をきっかけに、あなたのAIスキルをどんどん広げていってくださいね!


あわせて読みたい

🔸 NumPyの基本と使い方をやさしく解説|配列・計算・統計処理がこれ1本で!
→ 配列操作の基礎は、データ分析や機械学習に必須!この1記事でNumPyの全体像がつかめます。

🔸 【Python入門】Pandasの使い方完全ガイド|DataFrame操作と分析の基本をやさしく解説!
→ 今回使ったアヤメのデータのような「表形式のデータ」を自在に扱えるようになるために、Pandasをマスターしましょう。

🔸Pythonでグラフを描く!Matplotlibの使い方を初心者向けにやさしく解説
→ 学習結果やデータの可視化をしたいなら、グラフは欠かせません。初心者でもすぐ描けるMatplotlib入門!

🔸 【Python株価分析】データ取得・可視化・予測まで完全ガイド!
→ 本格的なデータ分析・予測にチャレンジしたい方におすすめ。リアルなデータで学びを応用!


よくある質問(Q&A)

Q
Python初心者でも機械学習はできますか?
A

はい、大丈夫です!
今回紹介したように、scikit-learnを使えばたった数行のコードで機械学習を体験できます。難しい数式よりも、「まず動かしてみる」ことから始めるのがコツです。

Q
scikit-learn以外にも機械学習のライブラリはあるの?
A

あります。たとえば:

  • TensorFlow:ディープラーニング(深層学習)向け
  • PyTorch:研究でも人気の高いフレームワーク
  • XGBoost / LightGBM:精度が高く、Kaggleなどのコンペでもよく使われる

でも、最初はscikit-learnが一番やさしいので、入門にはぴったりです。

Q
学習データとテストデータを分けるのはなぜ?
A

理由は、本当に正しい予測ができているか確認するためです。
学習に使ったデータだけで評価すると、「答えを丸暗記しただけ」の状態になる可能性があります。テストデータで評価することで、「知らないデータにも強いか?」をチェックできます。

※当サイトはアフィリエイト広告を利用しています。リンクを経由して商品を購入された場合、当サイトに報酬が発生することがあります。

※本記事に記載しているAmazon商品情報(価格、在庫状況、割引、配送条件など)は、執筆時点のAmazon.co.jp上の情報に基づいています。
最新の価格・在庫・配送条件などの詳細は、Amazonの商品ページをご確認ください。

スポンサーリンク