okpy

Pythonエンジニア兼テックリーダーが、多くのプロジェクトとチーム運営から得た実践的な知識を共有するブログです。

scikit-learnで始める機械学習

Python scikit-learn ライブラリ完全ガイド

scikit-learn(サイキットラーン)は、機械学習アルゴリズムの学習・実装・検証を効率的に行うための Python ライブラリです。分類、回帰、クラスタリング、次元削減など、幅広いアルゴリズムを備えています。本記事では、scikit-learn の基本機能と実践的な使い方をコピー可能なコードブロック付きで紹介します。

1. scikit-learn の概要

  • 機械学習モデルのトレーニングと評価が簡単にできる。
  • NumPy、SciPy、matplotlib と連携可能。
  • データ前処理、特徴量選択、モデル選定、パイプライン構築までカバー。

インストール方法

pip install scikit-learn

2. 主な機能と使用例

(1) データセットの読み込み(Iris データ)

from sklearn.datasets import load_iris

iris = load_iris()
X = iris.data
y = iris.target
print(X[:5])

(2) 訓練データとテストデータの分割

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)

(3) モデルのトレーニング(SVM

from sklearn.svm import SVC

model = SVC(kernel='linear')
model.fit(X_train, y_train)

(4) モデルの予測と評価

from sklearn.metrics import accuracy_score

y_pred = model.predict(X_test)
print("Accuracy:", accuracy_score(y_test, y_pred))

(5) 混同行列の表示

from sklearn.metrics import confusion_matrix
import matplotlib.pyplot as plt
import seaborn as sns

cm = confusion_matrix(y_test, y_pred)
sns.heatmap(cm, annot=True, fmt='d')
plt.xlabel('Predicted')
plt.ylabel('True')
plt.show()

(6) パイプラインによる前処理とモデル構築

from sklearn.pipeline import Pipeline
from sklearn.preprocessing import StandardScaler

pipeline = Pipeline([
    ('scaler', StandardScaler()),
    ('svc', SVC())
])

pipeline.fit(X_train, y_train)

(7) 交差検証(クロスバリデーション)

from sklearn.model_selection import cross_val_score

scores = cross_val_score(model, X, y, cv=5)
print("CV平均精度:", scores.mean())

(8) グリッドサーチによるハイパーパラメータ調整

from sklearn.model_selection import GridSearchCV

params = {'kernel': ['linear', 'rbf'], 'C': [0.1, 1, 10]}
gs = GridSearchCV(SVC(), param_grid=params, cv=5)
gs.fit(X_train, y_train)
print("最適パラメータ:", gs.best_params_)

(9) 特徴量の重要度

from sklearn.ensemble import RandomForestClassifier

rf = RandomForestClassifier()
rf.fit(X_train, y_train)
print(rf.feature_importances_)

(10) モデルの保存と読み込み

import joblib

joblib.dump(model, 'model.pkl')
model_loaded = joblib.load('model.pkl')

3. scikit-learn の主な機能まとめ

機能 説明
datasets 標準データセットの読み込み
model_selection データ分割・交差検証・グリッドサーチなど
preprocessing 標準化、スケーリング、ラベルエンコーディングなど
metrics 精度、混同行列、ROC曲線などの評価指標
pipeline 前処理+モデルの一体化構築

まとめ

scikit-learn は、シンプルな構文で強力な機械学習ワークフローを構築できるライブラリです。初学者から実務者まで幅広く支持されており、モデルの学習、評価、チューニングまでを一貫してサポートします。機械学習を始めたい方は、まず scikit-learn から学び始めるのがおすすめです!