はじめに
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学習のおすすめスクール
- 資格と仕事に強い個人レッスン → 【Winスクール】プログラミング・AI講座

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


コメント