予測対象の変換

Machine LearningMachine LearningBeginner
今すぐ練習

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

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

はじめに

機械学習においては、モデルを学習する前に予測対象を変換する必要がよくあります。これには、多クラスラベルを2値インジケータ行列に変換したり、非数値ラベルを数値ラベルにエンコードしたりするなどのタスクが含まれます。

この実験では、scikit - learnのsklearn.preprocessingモジュールが提供する予測対象を変換するための様々な手法を探ります。

VMのヒント

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

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

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


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL sklearn(("Sklearn")) -.-> sklearn/DataPreprocessingandFeatureEngineeringGroup(["Data Preprocessing and Feature Engineering"]) ml(("Machine Learning")) -.-> ml/FrameworkandSoftwareGroup(["Framework and Software"]) sklearn/DataPreprocessingandFeatureEngineeringGroup -.-> sklearn/preprocessing("Preprocessing and Normalization") ml/FrameworkandSoftwareGroup -.-> ml/sklearn("scikit-learn") subgraph Lab Skills sklearn/preprocessing -.-> lab-71136{{"予測対象の変換"}} ml/sklearn -.-> lab-71136{{"予測対象の変換"}} end

ラベル2値化

ラベル2値化は、多クラスラベルを2値インジケータ行列に変換するプロセスです。LabelBinarizerクラスを使って達成できます。

from sklearn import preprocessing

## LabelBinarizerインスタンスを作成
lb = preprocessing.LabelBinarizer()

## 多クラスラベルのリストにLabelBinarizerを適用
lb.fit([1, 2, 6, 4, 2])

## LabelBinarizerが学習したクラスを取得
lb.classes_

## 多クラスラベルのリストを2値インジケータ行列に変換
lb.transform([1, 6])

マルチラベル2値化

マルチラベル2値化は、ラベルのコレクションのコレクションをインジケータ形式に変換するプロセスです。これはMultiLabelBinarizerクラスを使って達成できます。

from sklearn.preprocessing import MultiLabelBinarizer

## ラベルのコレクションのリストを定義
y = [[2, 3, 4], [2], [0, 1, 3], [0, 1, 2, 3, 4], [0, 1, 2]]

## MultiLabelBinarizerインスタンスを作成し、コレクションのリストにfit_transformを適用
MultiLabelBinarizer().fit_transform(y)

ラベルエンコーディング

ラベルエンコーディングは、非数値ラベルを数値ラベルに変換するプロセスです。これはLabelEncoderクラスを使って達成できます。

from sklearn import preprocessing

## LabelEncoderインスタンスを作成
le = preprocessing.LabelEncoder()

## 非数値ラベルのリストにLabelEncoderを適用
le.fit(["paris", "paris", "tokyo", "amsterdam"])

## LabelEncoderが学習したクラスを取得
list(le.classes_)

## 非数値ラベルのリストを数値ラベルに変換
le.transform(["tokyo", "tokyo", "paris"])

## 数値ラベルを逆変換して非数値ラベルに戻す
list(le.inverse_transform([2, 2, 1]))

まとめ

この実験では、scikit - learnのsklearn.preprocessingモジュールが提供する様々な手法を使って予測対象を変換する方法を学びました。これらの手法には、ラベル2値化、マルチラベル2値化、およびラベルエンコーディングが含まれました。