【初心者向け】Scikit-learnで学ぶ機械学習入門

1. はじめに

近年、機械学習はさまざまな分野で活用されており、Pythonを使った機械学習の基礎を学ぶことは非常に有益です。本記事では、Pythonの人気機械学習ライブラリであるScikit-learnを使って、機械学習の基本を分かりやすく解説します。

【本記事のゴール】

  • Scikit-learnとは何かを理解する
  • 環境構築と必要なライブラリをインストールする
  • 簡単な機械学習モデル(分類・回帰・クラスタリング)を実装する

初心者の方でも安心して学べるように、コード付きで詳しく説明していきます。


2. Scikit-learnとは?

2-1. Scikit-learnの概要

Scikit-learn(サイキットラーン) は、Pythonで機械学習を行うためのライブラリのひとつであり、以下の特徴を持っています。

シンプルなAPI:機械学習の基本的な操作(データの前処理、モデルの訓練、予測、評価)を簡単に実装できる
多様なアルゴリズムを提供:分類・回帰・クラスタリング・次元削減など、多くの機械学習手法が利用可能
他のライブラリと連携しやすい:NumPyやPandasと組み合わせてデータ処理がスムーズに行える

2-2. Scikit-learnでできること

Scikit-learnを使うことで、以下のような機械学習タスクを簡単に実装できます。

分類回帰クラスタリング次元削減
ロジスティック回帰線形回帰K-meansPCA
SVMリッジ回帰階層的クラスタリングLDA
決定木ラッソ回帰DBSCANt-SNE

本記事では、分類(ロジスティック回帰)・回帰(線形回帰)・クラスタリング(K-means) を順番に学んでいきます。


3. 環境構築(Scikit-learnのインストール)

3-1. 必要なライブラリのインストール

まずは、Scikit-learnと関連ライブラリをインストールしましょう。

pip install numpy pandas matplotlib scikit-learn

💡 このコマンドが動作しない場合の対処法

🔹 pipがインストールされていない場合

python -m ensurepip --default-pip

🔹 pipを最新バージョンにする

pip install --upgrade pip

🔹 仮想環境(venv)を使用する場合

python -m venv myenv
source myenv/bin/activate  # Mac/Linux
myenv\Scripts\activate  # Windows
pip install numpy pandas matplotlib scikit-learn

各ライブラリの役割

  • NumPy:数値計算を行う(行列演算など)
  • Pandas:データの読み込み・加工・解析を行う
  • Matplotlib:データの可視化を行う
  • Scikit-learn:機械学習モデルの構築と評価を行う

4. 初めての機械学習(分類モデル)

4-1. データセットの準備(Irisデータセット)

Scikit-learnには、学習用のサンプルデータセットが用意されています。今回は、Iris(アイリス)データセット を使用します。

from sklearn.datasets import load_iris
import pandas as pd

# データの読み込み
dataset = load_iris()
df = pd.DataFrame(dataset.data, columns=dataset.feature_names)
df['target'] = dataset.target

# データの確認
print(df.head())

💡 このコードの説明

  • load_iris() は、Scikit-learn に含まれるサンプルデータセット「アイリスデータセット」を読み込む関数です。
  • pd.DataFrame(dataset.data, columns=dataset.feature_names) で、データをPandasのDataFrame形式に変換し、特徴量に適切なラベルを付けます。
  • df['target'] = dataset.target で、分類ラベル(アヤメの種類)をDataFrameに追加します。
  • print(df.head()) で、データの最初の5行を表示し、内容を確認します。

このデータセットを使って、分類モデルを構築していきます。

💡 Irisデータセットとは?

  • 3種類のアヤメの花を分類するためのデータセット
  • 花弁や萼(がく)の長さ・幅を特徴量として持つ

4-2. モデルの学習(ロジスティック回帰)

from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score

# 訓練データとテストデータに分割
X_train, X_test, y_train, y_test = train_test_split(dataset.data, dataset.target, test_size=0.2, random_state=42)

# モデルの構築と訓練
model = LogisticRegression()
model.fit(X_train, y_train)

# 予測と評価
y_pred = model.predict(X_test)
print(f"Accuracy: {accuracy_score(y_test, y_pred):.2f}")

💡 このコードの説明

  • train_test_split() を使用して、データセットを訓練データ(80%)とテストデータ(20%)に分割します。
  • LogisticRegression() で、ロジスティック回帰モデルを作成します。
  • model.fit(X_train, y_train) で、訓練データを使ってモデルを学習させます。
  • model.predict(X_test) で、テストデータに対して予測を行います。
  • accuracy_score(y_test, y_pred) で、予測結果と正解ラベルを比較し、分類の正確性を評価します。

このモデルがどれくらい正確に花の種類を分類できるかを測ることができます。

💡 ロジスティック回帰とは?

  • 分類問題に適した機械学習アルゴリズム
  • 出力は「0 または 1」などのカテゴリ(確率に基づく)

5. 応用(回帰モデル & クラスタリング)

5-1. 線形回帰を使った予測モデル

from sklearn.linear_model import LinearRegression
import numpy as np

# ダミーデータの作成
X = np.array([1, 2, 3, 4, 5]).reshape(-1, 1)
y = np.array([2, 4, 6, 8, 10])

# モデルの学習
model = LinearRegression()
model.fit(X, y)

# 予測
pred = model.predict([[6]])
print(f"予測値: {pred[0]:.2f}")

💡 このコードの説明

  • X = np.array([1, 2, 3, 4, 5]).reshape(-1, 1) で、1次元の特徴量データを作成。
  • y = np.array([2, 4, 6, 8, 10]) で、目的変数(予測したい値)を作成。
  • LinearRegression() を使って線形回帰モデルを作成。
  • model.fit(X, y) で、データに基づいてモデルを学習。
  • model.predict([[6]]) で、新しいデータに対して予測を行う。

この例では、 X が 6 のときの y の値を予測するモデルを作成しています。

5-2. K-meansを使ったクラスタリング

from sklearn.cluster import KMeans

# モデルの構築
model = KMeans(n_clusters=3, random_state=42)
model.fit(dataset.data)

# 各データのクラスタを表示
print(model.labels_)

💡 このコードの説明

  • KMeans(n_clusters=3, random_state=42) で、データを3つのクラスタに分けるクラスタリングモデルを作成。
  • model.fit(dataset.data) で、アイリスデータセットの特徴量を用いてクラスタリングを実行。
  • model.labels_ で、各データポイントがどのクラスタに分類されたかを確認。

この手法を使うと、教師なし学習でデータを自動的にグループ化することができます。


6. まとめ & 次に学ぶべきこと

6-1. 今回学んだこと

✅ Scikit-learnの基本を理解した
✅ 分類(ロジスティック回帰)・回帰(線形回帰)・クラスタリング(K-means)を実装した

6-2. 次に学ぶべきこと

  • モデルの評価方法(混同行列・精度評価)
  • データの前処理(正規化・特徴量エンジニアリング)
  • 深層学習(TensorFlow・PyTorch)の基礎

これからも機械学習の学びを深めていきましょう!

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

上部へスクロール