ワンホットエンコーダ
メニューを表示するにはスワイプしてください
名義値の処理は、やや複雑。
順序データ(例:'Terrible'から'Great'までのユーザー評価)の場合、0から4までの数値でエンコードすることで、モデルが本来の順序性を捉えることが可能。
一方、'city'のように5つの異なるカテゴリを持つ特徴量では、0から4までの数値でエンコードすると誤った順序性が示唆されてしまう。この場合、ワンホットエンコーディングが適切であり、カテゴリ間の階層関係を示さずに表現できる。
名義データのエンコードには、OneHotEncoderトランスフォーマーを使用。各ユニークな値ごとに列を作成し、各行について該当する値の列に1、それ以外の列に0を設定。
元々の 'NewYork' は、'City_NewYork' 列で 1 となり、他の City_ 列では 0 となっています。
OneHotEncoder を penguins データセットに適用。名義特徴量は 'island' と 'sex'。'species' 列はターゲットであり、次章の target encoding で別途扱います。
123456import 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())
OneHotEncoder を適用するには、エンコーダーオブジェクトを初期化し、選択したカラムを .fit_transform() に渡します。他のトランスフォーマーと同様の方法です。
1234567891011import 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())
.toarray() メソッドは、OneHotEncoder の出力である 疎行列 を密な NumPy 配列に変換します。密配列 はすべての値を明示的に表示し、エンコードされたデータを DataFrame 内で可視化・操作しやすくします。疎行列は ゼロでない要素 のみを格納し、メモリ使用量を最適化します。このメソッドを省略すると、出力の違いを確認できます。
フィードバックありがとうございます!
AIに質問する
AIに質問する
何でも質問するか、提案された質問の1つを試してチャットを始めてください