scikit-learnの使い方入門【機械学習を始める人向け実践ガイド】

scikit-learnの使い方入門【機械学習を始める人向け実践ガイド】 AI資格・学習

はじめに

Pythonで機械学習を始めるなら、まず覚えるべきライブラリが「scikit-learn(サイキットラーン)」です。分類・回帰・クラスタリング・次元削減など、主要な機械学習アルゴリズムが揃っており、統一されたインターフェースで使えます。

僕は大学の研究からscikit-learnを使い始め、今も実務やSignateのコンペで日常的に使っています。この記事では、scikit-learnの基本的な使い方を実際のコードと一緒に解説します。

scikit-learnの統一インターフェース

scikit-learnの最大の特徴は、どのアルゴリズムも同じ操作で使えることです。

from sklearn.XXX import YYYModel

# 1. モデルの作成(ハイパーパラメータを設定)
model = YYYModel(param=value)

# 2. 学習
model.fit(X_train, y_train)

# 3. 予測
y_pred = model.predict(X_test)

# 4. 評価
score = model.score(X_test, y_test)

この4ステップがすべてのアルゴリズムで共通です。

分類問題の実装

from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import classification_report, confusion_matrix

# データ読み込み
iris = load_iris()
X, y = iris.data, iris.target

# 分割
X_train, X_test, y_train, y_test = train_test_split(
    X, y, test_size=0.2, random_state=42, stratify=y
)

# モデル学習
clf = RandomForestClassifier(n_estimators=100, random_state=42)
clf.fit(X_train, y_train)

# 評価
y_pred = clf.predict(X_test)
print(classification_report(y_test, y_pred, target_names=iris.target_names))
print("混同行列:")
print(confusion_matrix(y_test, y_pred))

回帰問題の実装

from sklearn.datasets import fetch_california_housing
from sklearn.ensemble import GradientBoostingRegressor
from sklearn.metrics import mean_absolute_error, r2_score

# 住宅価格データ
housing = fetch_california_housing()
X, y = housing.data, housing.target

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

reg = GradientBoostingRegressor(n_estimators=200)
reg.fit(X_train, y_train)

y_pred = reg.predict(X_test)
print(f"MAE: {mean_absolute_error(y_test, y_pred):.3f}")
print(f"R²: {r2_score(y_test, y_pred):.3f}")

パイプラインで前処理とモデルを統合する

パイプラインを使うと、前処理とモデルを一体化して管理できます。データリークを防ぐためにも推奨されます。

from sklearn.pipeline import Pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.impute import SimpleImputer
from sklearn.linear_model import LogisticRegression

pipeline = Pipeline([
    ('imputer', SimpleImputer(strategy='median')),    # 欠損値補完
    ('scaler', StandardScaler()),                      # 標準化
    ('classifier', LogisticRegression(max_iter=1000)) # 分類器
])

pipeline.fit(X_train, y_train)
print(f"テスト精度: {pipeline.score(X_test, y_test):.3f}")

# パイプラインごと保存できる
import joblib
joblib.dump(pipeline, 'pipeline.pkl')

主要なアルゴリズム一覧

分類

  • LogisticRegression:シンプルで解釈しやすい
  • RandomForestClassifier:精度が安定。特徴量重要度が見られる
  • GradientBoostingClassifier:高精度。XGBoost・LightGBMの元祖
  • SVC:高次元データに有効

回帰

  • LinearRegression:最もシンプルな回帰
  • Ridge:L2正則化あり
  • Lasso:L1正則化あり(特徴量選択効果)
  • GradientBoostingRegressor:高精度な回帰

前処理

  • StandardScaler:標準化(平均0・標準偏差1)
  • MinMaxScaler:正規化(0〜1)
  • OneHotEncoder:カテゴリ変数のエンコード
  • SimpleImputer:欠損値補完

まとめ

scikit-learnは機械学習の入門として最適なライブラリです。fit→predict→scoreの3ステップを覚えて、まずはIrisやBoston Housingなどのサンプルデータで試してみてください。慣れてきたらパイプラインや交差検証も取り入れることで、実務でも使えるコードになります。

📌 プログラミング・AI学習のおすすめスクール

※本記事にはアフィリエイトリンクが含まれます。

コメント

タイトルとURLをコピーしました