Scikit-Learnを選ぶ理由#

Scikit-Learnは、現代の機械学習ツールをケモメトリクスにもたらし、ワークフローをより柔軟でスケーラブルにし、プロトタイピングと検証を容易にします。

  • 柔軟性:様々なケモメトリクスモデルおよび前処理手法と連携します。

  • 統合性:スペクトル分析、多変量統計、実験計画法のためのドメイン固有のツールと組み合わせることができます。

  • スケーラビリティ:小規模な実験室データセットから大規模な産業データまで扱うことができます。

  • 容易な実験:様々なアルゴリズムと前処理技術による迅速なプロトタイピングが可能です。

Scikit-Learnとは#

Scikit-learn ( sklearn ) は、 NumPy , SciPy 上に構築されたオープンソースの機械学習ライブラリです。以下のような様々な機械学習技術に対して統一されたAPIを提供します:

  • 教師あり学習:回帰、分類、アンサンブル手法

  • 教師なし学習:クラスタリングと次元削減

  • データ前処理:特徴量スケーリング、エンコーディング、変換

  • モデル評価:交差検証、評価指標、ハイパーパラメータチューニング

scikit-learn は、そのシンプルさ、効率性、そして充実したドキュメントにより、研究および産業界で広く使用されています。

幅広いモデルと手法のツールボックス#

scikit-learn の最大の強みの1つは、その豊富なモデルとツールの選択肢です。主なカテゴリには以下が含まれます:

回帰#

  • 線形回帰 ( LinearRegression ) :連続的な目的変数に対するシンプルかつ効果的なモデル。

  • 部分最小二乗回帰 ( PLSRegression ) :ケモメトリクスで頻繁に使用される強力な手法。

  • サポートベクター回帰 ( SVR ) :非線形関係に対して効果的です。

分類#

  • ロジスティック回帰 ( LogisticRegression ) :二値および多クラス分類用。

  • ランダムフォレスト ( RandomForestClassifier ) :より高い精度を得るための堅牢なアンサンブル手法。

  • サポートベクターマシン ( SVC ) :複雑な決定境界に対して効果的です。

次元削減#

  • 主成分分析 ( PCA ) :データセット内の最も重要な特徴量を抽出します。

  • 非負値行列因子分解 ( NMF ) :信号分解に有用です。

  • t-SNE ( TSNE ) :複雑な高次元データの可視化を支援します。

前処理ツール#

  • 特徴量スケーリング ( StandardScaler , MinMaxScaler ) :距離指標に依存するモデルにとって必須です。

  • カテゴリカルデータのエンコーディング ( OneHotEncoder , LabelEncoder ) :カテゴリカル変数を数値形式に変換します。

  • 特徴量選択 ( SelectKBest , RFE ) :最も関連性の高い変数を選択するのに役立ちます。

scikit-learnのワークフロー#

Scikit-learnは、以下の図に示す直感的な3ステップのプロセスに従います:

scikit-learnワークフロー
  1. 定義:モデル/前処理のパラメータを設定します。

  2. 学習:モデルが fit() を使用して訓練データからパターンを学習します。

  3. 適用:学習済みモデルが以下のいずれかを使用して新しいデータを処理します:

  • 前処理ステップと教師なし学習には transform()

  • 教師あり学習モデル(分類と回帰)には predict()

前処理と回帰モデルの2つの例を見てみましょう。まず、必要なモジュールをインポートします:

from sklearn.preprocessing import StandardScaler
from sklearn.cross_decomposition import PLSRegression

StandardScaler による前処理:

# 1. Define the preprocessor
scaler = StandardScaler(with_mean=True, with_std=False)

# 2. Fit the preprocessor to the data
scaler.fit(X)

# 3. Apply the processor to the data
X_scaled = scaler.transform(X)

# ... or to new new data
X_new_scaled = scaler.transform(X_new)

PLSRegression モデルの構築:

# 1. Define the PLS model with two components
pls = PLSRegression(n_components=2)

# 2. Fit the PLS model to the training data
pls.fit(X_scaled, y)

# 3. Apply the PLS model to new data
y_pred = pls.predict(X_new_scaled)

拡張エコシステム#

scikit-learn の主要パッケージに加えて、その機能を拡張する幅広い補完的なオープンソースライブラリがエコシステムに含まれています:

  • skore :モデルの開発と解釈を効率化し構造化します。

  • astartes :データを訓練セットとテストセットに分割するためのアルゴリズム技術。

  • Imbalanced-learn :不均衡データセットを扱うための技術。

  • skops :機械学習モデルをシリアライズおよび共有するためのツール。