Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
学ぶ ワンホットエンコーダ | Scikit-learnによるデータの前処理
Pythonによる機械学習入門

bookワンホットエンコーダ

メニューを表示するにはスワイプしてください

名義値の処理は、やや複雑。

順序データ(例:'Terrible'から'Great'までのユーザー評価)の場合、0から4までの数値でエンコードすることで、モデルが本来の順序性を捉えることが可能。

一方、'city'のように5つの異なるカテゴリを持つ特徴量では、0から4までの数値でエンコードすると誤った順序性が示唆されてしまう。この場合、ワンホットエンコーディングが適切であり、カテゴリ間の階層関係を示さずに表現できる。

名義データのエンコードには、OneHotEncoderトランスフォーマーを使用。各ユニークな値ごとに列を作成し、各行について該当する値の列に1、それ以外の列に0を設定。

元々の 'NewYork' は、'City_NewYork' 列で 1 となり、他の City_ 列では 0 となっています。

OneHotEncoderpenguins データセットに適用。名義特徴量は 'island''sex''species' 列はターゲットであり、次章の target encoding で別途扱います。

123456
import pandas as pd df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/a65bbc96-309e-4df9-a790-a1eb8c815a1c/penguins_imputed.csv') print('island: ', df['island'].unique()) print('sex: ', df['sex'].unique())
copy

OneHotEncoder を適用するには、エンコーダーオブジェクトを初期化し、選択したカラムを .fit_transform() に渡します。他のトランスフォーマーと同様の方法です。

1234567891011
import pandas as pd from sklearn.preprocessing import OneHotEncoder df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/a65bbc96-309e-4df9-a790-a1eb8c815a1c/penguins_imputed.csv') # Assign X, y variables y = df['species'] X = df.drop('species', axis=1) # Initialize an OneHotEncoder object one_hot = OneHotEncoder() # Print transformed 'sex', 'island' columns print(one_hot.fit_transform(X[['sex', 'island']]).toarray())
copy
Note
ノート

.toarray() メソッドは、OneHotEncoder の出力である 疎行列 を密な NumPy 配列に変換します。密配列 はすべての値を明示的に表示し、エンコードされたデータを DataFrame 内で可視化・操作しやすくします。疎行列は ゼロでない要素 のみを格納し、メモリ使用量を最適化します。このメソッドを省略すると、出力の違いを確認できます。

question mark

OneHotEncoder は新しい列を作成します。これは正しいですか?

正しい答えを選んでください

すべて明確でしたか?

どのように改善できますか?

フィードバックありがとうございます!

セクション 2.  6

AIに質問する

expand

AIに質問する

ChatGPT

何でも質問するか、提案された質問の1つを試してチャットを始めてください

セクション 2.  6
some-alt