scikit-learnのLabelEncoderに関する質問です。
####実行内容・疑問点
まず以下のようにしてLabelEncodingを行いました。( jupiter notebookを用いています。)
python
1from sklearn.preprocessing import LabelEncoder 2 3le = LabelEncoder() 4le.fit(["umi", "yama", "tokyo", "kyoto"]) 5print(le.transform(["yama"]) ) 6#出力結果=>[3] 7 8le = LabelEncoder() 9le.fit(["umi", "yama", "tokyo", "kyoto"]) 10print(le.transform(["yama"])) 11#出力結果=>[3]
ここで、1度目の出力の後、もう一度
le = LabelEncoder() le.fit(["umi", "yama", "tokyo", "kyoto"])
として、LabelEncoder()を定義し直し、再びfit()を行なっている訳ですが、le.transform(["yama"])の出力結果が1度目と等しくなります。
次に、
python
1le = LabelEncoder() 2le.fit(["umi", "yama", "tokyo", "kyoto"]) 3print(le.transform(["tokyo"])) 4#出力結果=>[1] 5 6le = LabelEncoder() 7le.fit(["umi", "yama", "tokyo", "kyoto"]) 8print(le.transform(["tokyo"])) 9#出力結果=>[1]
を行いましたが、やはりle.transform(["tokyo"])の出力結果が等しくなりました。
ここで、ラベル名が等しければ、LabelEncoder()を定義し直し、再度fit()を行なっても、出力結果が必ず等しくなるのかな?と思ったのです。
しかし、以下のコードを実行したところ、
python
1le = LabelEncoder() 2le.fit(["umi", "yama", "tokyo", "kyoto","mori"]) 3print(le.transform(["tokyo"])) 4#出力結果=>[2]
le.transform(["tokyo"])の出力が、[1]ではなく[2]になりました。
変更点は、fit()に用いるラベルを1つ追加したことです。
さらに、以下も実行しました。
python
1le = LabelEncoder() 2le.fit(["umi", "yama", "tokyo", "kyoto","mori","mori","mori","mori"]) 3print(le.transform(["tokyo"])) 4#出力結果=>[2]
今度は1つ前の出力結果と等しくなります。一体どういう仕組みでラベルの数値化が行われているのか、とても気になっています。
####質問
LabelEncoderを用いた際、ラベル名を数値に変換する際にどういったルールがあるのか、詳しい方がいたら教えていただきたいです。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/11/15 12:42