scikit-learn
は、Pythonで機械学習を行うための最も広く利用されているライブラリの一つです。簡潔で統一されたAPIを提供し、教師あり学習、教師なし学習、データ前処理、モデル選択など、機械学習プロジェクトに必要な多くのツールが含まれています。
scikit-learnの特徴
- 多くのアルゴリズムに対応
- 線形回帰、決定木、ランダムフォレスト、SVM、クラスタリング(k-means)など、多種多様なアルゴリズムをサポート。
- データ前処理ツールが充実
- 標準化、正規化、カテゴリ変数のエンコード、欠損値補完など。
- 統一されたAPI
- すべてのアルゴリズムが一貫したインターフェースで利用可能。
- クロスバリデーションとモデル選択
- モデル評価、ハイパーパラメータチューニング、交差検証が簡単に行える。
- 他のライブラリとの統合
numpy
やpandas
と簡単に連携可能。
scikit-learnのインストール
以下のコマンドでインストールできます:
bashコードをコピーするpip install scikit-learn
基本的な使い方の流れ
scikit-learnの典型的なワークフローは以下のようになります。
- データの準備
numpy
やpandas
を使ってデータを読み込みます。
- データの前処理
- 標準化、正規化、欠損値の補完、カテゴリ変数のエンコードなどを実施。
- モデルの選択
- 利用する機械学習アルゴリズムを選択。
- 学習と予測
- モデルをデータにフィットさせ、予測を行います。
- モデルの評価
- 精度やF1スコア、ROC曲線などでモデルの性能を評価。
- ハイパーパラメータのチューニング
- 最適なモデルパラメータを見つける。
具体的な例
1. 教師あり学習: 線形回帰
以下は、線形回帰を用いてデータを学習し、予測を行う例です。
pythonコードをコピーするfrom sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error
# データの準備
X = [[1], [2], [3], [4], [5]] # 特徴量
y = [1.5, 3.5, 5.0, 7.0, 8.5] # ターゲット
# データを訓練用とテスト用に分割
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# モデルの作成
model = LinearRegression()
# モデルの訓練
model.fit(X_train, y_train)
# 予測
y_pred = model.predict(X_test)
# モデルの評価
mse = mean_squared_error(y_test, y_pred)
print(f"Mean Squared Error: {mse}")
2. 教師なし学習: k-meansクラスタリング
クラスタリングによってデータをグループ分けします。
pythonコードをコピーするfrom sklearn.cluster import KMeans
import numpy as np
# データの準備
X = np.array([[1, 2], [1, 4], [1, 0],
[10, 2], [10, 4], [10, 0]])
# k-meansクラスタリング
kmeans = KMeans(n_clusters=2, random_state=0).fit(X)
# クラスタリング結果
print("Cluster Centers:")
print(kmeans.cluster_centers_)
print("Labels:")
print(kmeans.labels_)
3. データ前処理
カテゴリ変数のエンコードやデータの標準化を行います。
(1) 標準化
pythonコードをコピーするfrom sklearn.preprocessing import StandardScaler
# データの準備
X = [[1, 2], [2, 3], [3, 4]]
# 標準化
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)
print(X_scaled)
(2) One-Hotエンコーディング
pythonコードをコピーするfrom sklearn.preprocessing import OneHotEncoder
# カテゴリ変数
categories = [["Red"], ["Green"], ["Blue"]]
# One-Hotエンコーディング
encoder = OneHotEncoder(sparse=False)
encoded = encoder.fit_transform(categories)
print(encoded)
主なアルゴリズム一覧
教師あり学習
- 回帰
- 線形回帰、リッジ回帰、Lasso回帰
- 分類
- ロジスティック回帰、SVM、k近傍法(k-NN)、ランダムフォレスト
教師なし学習
- クラスタリング
- k-means、階層型クラスタリング
- 次元削減
- PCA(主成分分析)
モデル選択と評価
- クロスバリデーション
- グリッドサーチによるハイパーパラメータ調整
モデル評価
以下は、モデルの性能を評価するための指標例です。
分類
- 精度(Accuracy)
- 適合率(Precision)、再現率(Recall)
- F1スコア
- ROC曲線
回帰
- 平均二乗誤差(MSE)
- 平均絶対誤差(MAE)
- 決定係数(R²)
scikit-learnを学ぶ次のステップ
- 公式ドキュメント
- 実践プロジェクト
- KaggleやGoogle Colabで実際のデータを用いて分析。
- 学習リソース
- 書籍やオンラインコース(Coursera, Udemyなど)で深く学ぶ。
scikit-learnは、初心者からプロフェッショナルまで幅広く活用できるライブラリです。