私は訓練データとテストデータを持つ2つの異なるcsvを持っています。これらの train_features_df と test_features_df から 2 つの異なるデータフレームを作成しました。テスト データとトレーニング データには複数のカテゴリ列があるため、データセットに適しているので、それらに labelEncoder を適用する必要があることに注意してください。そのため、トレーニング データとテスト データに個別にラベル エンコーダーを適用しました。トレーニングとテスト データセットの新しいエンコードされた値を出力すると、同じ機能の同じカテゴリ値に対して、新しいエンコードされたデータからの出力が異なることがわかります。つまり、トレーニング データとテスト データをマージする必要があります。次に、ラベルのエンコーディングを適用してから、それらを再び分離しますか?
from sklearn.preprocessing import LabelEncoder
target=train_features_df['y']
train_features_df=train_features_df.drop(['y'], axis=1)
train_features_df.head()
y = target.values
print("printing feature column of train datasets: \n")
print(train_features_df.values)
le=LabelEncoder()
X_train_label_encoded=train_features_df.apply(le.fit_transform)
print("\n printing feature column of train datasets after label encoder: \n")
print(X_train_label_encoded.head())
print("printing test feature datasets: \n")
print(test_features_df)
X_test_label_encoded=test_features_df.apply(le.fit_transform)
print("printing test feature encoded datasets: \n")
print(X_test_label_encoded)
上記の出力は以下のとおりです:-
printing feature column of train datasets:
[['k' 'v' 'at' ... 0 0 0]
['k' 't' 'av' ... 0 0 0]
['az' 'w' 'n' ... 0 0 0]
X0 X1 X2 X3 X4 X5 X6 X8 X10 X12 ... X375 X376 X377 X378 \
0 32 23 17 0 3 24 9 14 0 0 ... 0 0 1 0
1 32 21 19 4 3 28 11 14 0 0 ... 1 0 0 0
2 20 24 34 2 3 27 9 23 0 0 ... 0 0 0 0
printing test feature datasets:
X0 X1 X2 X3 X4 X5 X6 X8 X10 X12 ... X375 X376 X377 X378 X379 \
0 az v n f d t a w 0 0 ... 0 0 0 1 0
1 t b ai a d b g y 0 0 ... 0 0 1 0 0
2 az v as f d a j j 0 0 ... 0 0 0 1 0
X0 X1 X2 X3 X4 X5 X6 X8 X10 X12 ... X375 X376 X377 X378 \
0 21 23 34 5 3 26 0 22 0 0 ... 0 0 0 1
1 42 3 8 0 3 9 6 24 0 0 ... 0 0 1 0
2 21 23 17 5 3 0 9 9 0 0 ... 0 0 0 1
3 21 13 34 5 3 31 11 13 0 0 ... 0 0 0 1
4 45 20 17 2 3 30 8 12 0 0 ... 1 0 0 0
最初の列の値をエンコードした後のトレーニングデータフレームaz
で最初の列の値が値20に変換されたのに対し、最初の列の値をレベルエンコードした後のテストデータフレームでaz
値21に変換されたことがわかります.