この用語をシェア
概要
scikit-learn(sklearn)は、Pythonの機械学習ライブラリです。分類、回帰、クラスタリングなどの機械学習アルゴリズムを豊富に提供し、初心者から専門家まで幅広く利用されています。一貫したAPIデザイン、豊富なドキュメント、実用的なアルゴリズムの実装により、機械学習プロジェクトの標準ライブラリとして広く採用されています。
詳細説明
主な特徴
- 統一されたAPI:すべての機械学習モデルで一貫したインターフェース
- 豊富なアルゴリズム:分類、回帰、クラスタリング、次元削減の幅広いカバー
- 高品質な実装:効率的で数値的に安定したアルゴリズム
- データ前処理:スケーリング、正規化、特徴選択などの前処理機能
- モデル評価:交差検証、メトリクス、パフォーマンス評価
主要モジュール
- 分類:SVM、ランダムフォレスト、ロジスティック回帰など
- 回帰:線形回帰、決定木回帰、SVR、勾配ブースティング
- クラスタリング:k-means、階層クラスタリング、DBSCAN
- 次元削減:PCA、LDA、t-SNE、UMAP
- 前処理:StandardScaler、MinMaxScaler、LabelEncoder
- モデル選択:GridSearchCV、RandomizedSearchCV
使用例
分類問題の基本的な流れ
import numpy as np
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score, classification_report
# データの読み込み
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.3, random_state=42
)
# モデルの訓練
model = RandomForestClassifier(n_estimators=100, random_state=42)
model.fit(X_train, y_train)
# 予測
y_pred = model.predict(X_test)
# 評価
accuracy = accuracy_score(y_test, y_pred)
print(f"精度: {accuracy:.4f}")
print(classification_report(y_test, y_pred))
回帰問題と交差検証
from sklearn.datasets import make_regression
from sklearn.linear_model import LinearRegression
from sklearn.preprocessing import StandardScaler
from sklearn.model_selection import cross_val_score
from sklearn.pipeline import Pipeline
# データの生成
X, y = make_regression(n_samples=1000, n_features=10, noise=0.1, random_state=42)
# パイプラインの作成
pipeline = Pipeline([
('scaler', StandardScaler()),
('regressor', LinearRegression())
])
# 交差検証
cv_scores = cross_val_score(pipeline, X, y, cv=5, scoring='r2')
print(f"R²スコア: {cv_scores.mean():.4f} (+/- {cv_scores.std() * 2:.4f})")
ハイパーパラメータ最適化
from sklearn.model_selection import GridSearchCV
from sklearn.svm import SVC
from sklearn.datasets import load_digits
# データの読み込み
digits = load_digits()
X, y = digits.data, digits.target
# ハイパーパラメータの範囲
param_grid = {
'C': [0.1, 1, 10, 100],
'gamma': ['scale', 'auto', 0.001, 0.01, 0.1, 1],
'kernel': ['rbf', 'linear']
}
# グリッドサーチ
grid_search = GridSearchCV(
SVC(), param_grid, cv=5, scoring='accuracy', n_jobs=-1
)
grid_search.fit(X, y)
print(f"最適なパラメータ: {grid_search.best_params_}")
print(f"最高スコア: {grid_search.best_score_:.4f}")
関連技術
- pandas:データ操作・前処理
- NumPy:数値計算の基盤
- matplotlib/seaborn:結果の可視化
- Jupyter Notebook:インタラクティブな分析
- joblib:モデルの保存・読み込み
- XGBoost/LightGBM:高度な勾配ブースティング
適用分野
- データサイエンス・機械学習の教育
- ビジネスアナリティクス
- 予測モデリング
- パターン認識
- マーケティング分析
- 医療データ分析
- 金融リスク評価
メリット・デメリット
メリット
- 学習しやすい一貫したAPI
- 豊富なドキュメントと例
- 実用的なアルゴリズムの充実
- 高品質で安定した実装
- 活発なコミュニティサポート
- 他のPythonライブラリとの親和性
デメリット
- 深層学習には対応していない
- 大規模データには限界がある
- GPU加速に対応していない
- オンライン学習の機能が限定的
- 最新のアルゴリズムの反映に時間がかかる