複数の特徴抽出方法の連結

Machine LearningMachine LearningBeginner
オンラインで実践に進む

This tutorial is from open-source community. Access the source code

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

この実験では、Python の scikit - learn ライブラリを使って複数の特徴抽出方法を連結する方法を学びます。PCA と単変量選択によって得られた特徴を結合するために、FeatureUnion変換器を使用します。この変換器を使って特徴を結合すると、クロスバリデーションやグリッドサーチを全体的なプロセスで行うことができるという利点があります。

VM のヒント

VM の起動が完了したら、左上隅をクリックしてノートブックタブに切り替えて、Jupyter Notebook を使って練習しましょう。

時々、Jupyter Notebook が読み込み終わるまで数秒待つ必要がある場合があります。Jupyter Notebook の制限により、操作の検証を自動化することはできません。

学習中に問題に遭遇した場合は、Labby にお問い合わせください。セッション後にフィードバックを提供してください。すぐに問題を解決いたします。

ライブラリのインポート

必要なライブラリをインポートして始めましょう。scikit - learn のPipelineFeatureUnionGridSearchCVSVCload_irisPCA、およびSelectKBestクラスを使用します。

from sklearn.pipeline import Pipeline, FeatureUnion
from sklearn.model_selection import GridSearchCV
from sklearn.svm import SVC
from sklearn.datasets import load_iris
from sklearn.decomposition import PCA
from sklearn.feature_selection import SelectKBest

データセットの読み込み

次に、load_iris関数を使ってアイリスのデータセットを読み込みます。

iris = load_iris()

X, y = iris.data, iris.target

特徴抽出

アイリスのデータセットは高次元であるため、PCA と単変量選択を使って特徴抽出を行います。

PCA

データセットの次元数を削減するために PCA を使用します。

pca = PCA(n_components=2)

単変量選択

最も重要な特徴を選択するために単変量選択を使用します。

selection = SelectKBest(k=1)

組み合わせた特徴

FeatureUnion トランスフォーマーを使って、PCA と単変量選択から得られた特徴を組み合わせます。

combined_features = FeatureUnion([("pca", pca), ("univ_select", selection)])

変換されたデータセット

組み合わせた特徴を使ってデータセットを変換します。

X_features = combined_features.fit(X, y).transform(X)
print("Combined space has", X_features.shape[1], "features")

モデルの学習

変換されたデータセットを使ってサポートベクターマシン(SVM)モデルを学習します。

svm = SVC(kernel="linear")

グリッドサーチ

GridSearchCV を使ってパイプラインのハイパーパラメータに対してグリッドサーチを行います。

pipeline = Pipeline([("features", combined_features), ("svm", svm)])

param_grid = dict(
    features__pca__n_components=[1, 2, 3],
    features__univ_select__k=[1, 2],
    svm__C=[0.1, 1, 10],
)

grid_search = GridSearchCV(pipeline, param_grid=param_grid, verbose=10)
grid_search.fit(X, y)
print(grid_search.best_estimator_)

まとめ

この実験では、Python の scikit - learn ライブラリを使って複数の特徴抽出方法を結合する方法を学びました。PCA と単変量選択によって得られた特徴を組み合わせるために FeatureUnion トランスフォーマーを使用しました。また、サポートベクターマシン(SVM)モデルを学習し、パイプラインのハイパーパラメータに対してグリッドサーチを行いました。