One-Hotエンコーダー
メニューを表示するにはスワイプしてください
名義値の処理は、やや複雑になる。
ユーザー評価のような順序尺度データ(「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つを試してチャットを始めてください