0

LabelEncoder を使用して、データセットのカテゴリ列を数値に変換しようとしています。 データセット

変換コードは次のとおりです。

for i in cat_columns:
    df[i]=encoder.fit_transform(df[i])

変換後のデータセットは、変換後のデータセットのように見えます

しかし、問題は、テスト データセットを変換しようとするたびにエラーが発生することです。

y contains previously unseen labels: 'Male'

テスト データの変換のコード:

for i in cat_columns:
    df1[i]=encoder.transform(df1[i])

テストデータ

どうすればこの問題を解決できますか?

4

1 に答える 1

0

問題は、同じエンコーダーを使用してすべての異なる列に適合していることだと思います。代わりに、異なるエンコーダーを使用して各列に合わせる必要があります。たとえば、辞書を使用してさまざまなエンコーダーを保存できます。

from sklearn import preprocessing

encoders = {}
for i in cat_columns:
    encoders[i] = preprocessing.LabelEncoder()
    df[i] = encoders[i].fit_transform(df[i])
    
for i in cat_columns:
    df1[i] = encoders[i].transform(df1[i])

発生するエラー ( ) は、前の for ループで作成した最後のエンコーダー (この場合はラベル エンコーダー) を使用しpreviously unseen labels: 'Male'て列を変換しようとしていることが原因です。gendersmoking_status

于 2021-02-25T09:32:48.063 に答える