Pythonの機械学習入門!scikit-learnで学ぶ分類モデルの基本と使い方
生徒
「Pythonで機械学習ってよく聞くんですが、何から始めればいいですか?」
先生
「まずは分類モデルから始めるのがおすすめです。データを元に答えを予測する仕組みを学べます。」
生徒
「分類モデルって何ですか?」
先生
「例えばメールが迷惑かどうかを判定するような処理です。では、Pythonのscikit-learnを使って基本を見ていきましょう!」
1. 機械学習と分類モデルとは?
機械学習とは、データからルールを自動で学習する技術です。人が細かく指示しなくても、コンピュータがパターンを見つけて判断できるようになります。
分類モデルとは、与えられたデータをグループ分けする仕組みです。例えば、果物のデータを使って「リンゴかミカンか」を判定するような処理が分類です。
この分類処理は、初心者でも理解しやすく、機械学習の第一歩としてとても重要です。
2. scikit-learnとは?
scikit-learnは、Pythonで機械学習を簡単に使えるようにしたライブラリです。難しい数式を知らなくても、少ないコードでモデルを作ることができます。
ライブラリとは、便利な機能がまとめられた部品集のようなものです。これを使うことで、開発がとても楽になります。
特に分類、回帰、クラスタリングなど基本的な機械学習が簡単に実装できます。
3. データを準備してみよう
機械学習では、まずデータが必要です。今回は簡単な数値データを使って分類を行います。
from sklearn import datasets
# サンプルデータを読み込む
iris = datasets.load_iris()
# 特徴量(入力データ)
X = iris.data
# 正解ラベル(答え)
y = iris.target
print(X[:3])
[[5.1 3.5 1.4 0.2]
[4.9 3. 1.4 0.2]
[4.7 3.2 1.3 0.2]]
このように、特徴量と呼ばれる入力データと、正解データを用意することが基本です。
4. 分類モデルを作ってみよう
次に分類モデルを作成します。ここでは決定木というアルゴリズムを使います。決定木は、条件分岐のように判断していくシンプルなモデルです。
from sklearn.tree import DecisionTreeClassifier
# モデル作成
model = DecisionTreeClassifier()
# 学習
model.fit(X, y)
print("学習完了")
学習完了
fitというメソッドは、データを使ってモデルを学習させる処理です。
5. 予測してみよう
学習したモデルを使って、新しいデータの予測を行います。
# 新しいデータ
new_data = [[5.0, 3.6, 1.4, 0.2]]
# 予測
result = model.predict(new_data)
print(result)
[0]
predictは予測を行うためのメソッドです。結果の数値は分類されたカテゴリを表します。
6. モデルの精度を確認しよう
機械学習では、どれくらい正しく予測できるかを確認することが重要です。これを精度と呼びます。
from sklearn.metrics import accuracy_score
# 同じデータで予測
pred = model.predict(X)
# 精度計算
score = accuracy_score(y, pred)
print(score)
1.0
accuracy_scoreは、どれくらい正解しているかを割合で表示します。
7. 学習データとテストデータの違い
同じデータで評価すると、精度が高く見えすぎることがあります。そのため、データを分けて評価します。
from sklearn.model_selection import train_test_split
# データ分割
X_train, X_test, y_train, y_test = train_test_split(X, y)
model.fit(X_train, y_train)
pred = model.predict(X_test)
print(accuracy_score(y_test, pred))
0.9
このように分けることで、より現実に近い評価ができます。
8. 初心者がつまずきやすいポイント
初心者がよくつまずくのは、データの意味を理解しないまま進めてしまうことです。特徴量とは何か、ラベルとは何かをしっかり理解することが重要です。
また、モデルの種類によって結果が変わるため、いろいろ試すことも大切です。
難しい数式は後からでも大丈夫なので、まずは動かして理解することを意識しましょう。
まとめ
機械学習と分類モデルの基本を振り返る
本記事では、Pythonを使った機械学習入門として、scikit-learnによる分類モデルの基本的な使い方を丁寧に解説しました。機械学習はデータからパターンを学習し、未知のデータに対して予測を行う技術であり、特に分類モデルは初心者にとって理解しやすい重要な入り口です。 分類モデルでは、特徴量と呼ばれる入力データと、正解ラベルをもとに学習を行い、新しいデータをカテゴリに分けることができます。今回使用したアヤメのデータセットのように、すでに整理されたデータを使うことで、学習の流れをスムーズに理解できます。
scikit-learnの使い方と実装の流れ
scikit-learnはPythonの機械学習ライブラリの中でも非常に人気が高く、シンプルなコードで分類・回帰・クラスタリングなどを実装できます。今回の流れとしては、データの準備、モデルの作成、学習、予測、精度評価という一連のプロセスを体験しました。 特にfitメソッドによる学習、predictメソッドによる予測は機械学習の基本中の基本であり、どのアルゴリズムでも共通して使われる重要な処理です。これらを繰り返し使うことで、自然と機械学習の理解が深まっていきます。
精度評価とデータ分割の重要性
機械学習では、モデルの性能を正しく評価することが非常に重要です。同じデータで学習と評価を行うと過学習が発生し、実際の運用ではうまく機能しない可能性があります。そのため、train_test_splitを使って学習データとテストデータを分けることが基本となります。 accuracy_scoreを用いた精度評価は初心者でも理解しやすく、どの程度正しく分類できているかを数値で確認できます。実務ではさらに複雑な評価指標も使われますが、まずはこの基本をしっかり押さえることが大切です。
実践で役立つサンプルプログラム
以下に、本記事の内容をまとめたサンプルコードを掲載します。Pythonとscikit-learnを使った分類モデルの一連の流れを復習するのに役立ちます。
from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier
from sklearn.metrics import accuracy_score
# データ読み込み
iris = datasets.load_iris()
X = iris.data
y = iris.target
# データ分割
X_train, X_test, y_train, y_test = train_test_split(X, y)
# モデル作成と学習
model = DecisionTreeClassifier()
model.fit(X_train, y_train)
# 予測
pred = model.predict(X_test)
# 精度評価
score = accuracy_score(y_test, pred)
print("精度:", score)
初心者が意識すべきポイント
Pythonによる機械学習を学び始めたばかりの方は、まずはコードを動かしながら流れを理解することが重要です。難しい理論や数式にとらわれすぎず、実際に手を動かして分類モデルを構築する経験を積むことで、自然と理解が深まります。 また、特徴量やラベルの意味を理解すること、複数のモデルを試して違いを比較することも大切です。これらを意識することで、より実践的なスキルを身につけることができます。
生徒
「Pythonで機械学習の流れが少し分かってきました。データを用意して学習させて予測するんですね。」
先生
「その通りです。特にscikit-learnはシンプルに書けるので、初心者にはとてもおすすめです。」
生徒
「でも精度が高いかどうかはどう判断すればいいんですか?」
先生
「accuracy_scoreのような評価指標を使います。ただし、学習データとテストデータを分けることが重要です。」
生徒
「同じデータだと良く見えすぎるんですね。」
先生
「その通りです。実際の運用を想定した評価をすることが大切です。」
生徒
「これからは別のモデルも試してみたいです。」
先生
「とても良い姿勢です。決定木以外にもロジスティック回帰やサポートベクターマシンなど様々な手法があります。比較しながら学んでいきましょう。」