R でラベル エンコーディングを実行する方法 (例あり)
機械学習では、カテゴリ変数をアルゴリズムで簡単に使用できる何らかの数値形式に変換することがよくあります。
これを行う 1 つの方法は、ラベル エンコーディングを使用することです。これにより、各カテゴリ値にアルファベット順に基づいて整数値が割り当てられます。
たとえば、次のスクリーンショットは、 Teamというカテゴリ変数の各一意の値を、アルファベット順に基づいて整数値に変換する方法を示しています。
R でラベル コーディングを実行するには、次の 2 つの一般的な方法があります。
方法 1: Base R を使用する
df$my_var <- as. numeric (factor(df$my_var))
方法 2: CatEncoders パッケージを使用する
library (CatEncoders) #define original categorical labels labs = LabelEncoder. fit (df$my_var) #convert labels to numeric values df$team = transform(labs, df$my_var)
次の例は、各メソッドを実際に使用する方法を示しています。
例 1: Base R を使用したラベルのエンコード
次のコードは、R の Base function()関数を使用して、 teamというカテゴリ変数を数値変数に変換する方法を示しています。
#create data frame df <- data. frame (team=c('A', 'A', 'B', 'B', 'B', 'B', 'C', 'C'), points=c(25, 12, 15, 14, 19, 23, 25, 29)) #view data frame df team points 1 to 25 2 to 12 3 B 15 4 B 14 5 B 19 6 B 23 7 C 25 8 C 29 #perform label encoding on team variable df$team <- as. numeric (factor(df$team)) #view updated data frame df team points 1 1 25 2 1 12 3 2 15 4 2 14 5 2 19 6 2 23 7 3 25 8 3 29
チーム列の新しい値に注目してください。
- 「A」は1になりました。
- 「B」が2になりました。
- 「C」が3になりました。
チーム列をカテゴリ変数から数値変数に正常に変換しました。
例 2: CatEncoders パッケージを使用したラベルのエンコード
次のコードは、 CatEncoders()パッケージの関数を使用して、 teamというカテゴリ変数を数値変数に変換する方法を示しています。
library (CatEncoders) #create data frame df <- data. frame (team=c('A', 'A', 'B', 'B', 'B', 'B', 'C', 'C'), points=c(25, 12, 15, 14, 19, 23, 25, 29)) #define original categorical labels labs = LabelEncoder. fit (df$team) #convert labels to numeric values df$team = transform(labs, df$team) #view updated data frame df team points 1 1 25 2 1 12 3 2 15 4 2 14 5 2 19 6 2 23 7 3 25 8 3 29
ここでも、チーム列に次の新しい値を生成しました。
- 「A」は1になりました。
- 「B」が2になりました。
- 「C」が3になりました。
これは前の例の結果と一致します。
このメソッドを使用すると、 inverse.transform()を使用してチーム列の元の値を取得することもできることに注意してください。
#display original team labels reverse. transform (labs, df$team) [1] “A” “A” “B” “B” “B” “B” “C” “C”
追加リソース
次のチュートリアルでは、R で他の一般的なタスクを実行する方法について説明します。
R で continue からカテゴリカル変数を作成する方法
R でカテゴリカル変数を作成する方法
R でカテゴリカル変数を数値に変換する方法