Pd.Get_Dummiesの良い面、悪い面、そして醜い面
Pd.Get_Dummiesの良い面、悪い面、そして醜い面' -> 'Pd.Get_Dummiesの良い面、悪い面、醜い面
pd.get_dummiesの愛好家のために
こんにちは皆さん🤠
わかりました。Pythonでカテゴリカル変数をダミーの配列に変換する最も簡単な方法の一つは、Pandasのpd.get_dummies()
を使用することです。なぜsklearnからOneHotEncoder
をインポートして.fit_transform()
などを実行する手間をかけるのでしょうか?手間のかかる作業ですね!
この記事では、まずデモンストレーション用のシンプルなデータセットを紹介します。このデータセットには、トレーニングセットには存在しないカテゴリカルが含まれているテストセットが含まれています。次に、pd.get_dummies()
を使用するとデモンストレーションデータで問題が発生することを示し、最後にsklearnのOneHotEncoder
を使用してその問題を回避する方法を示します。
デモンストレーション用のシンプルなデータセット
ここでは、OSというカテゴリカルな特徴を含むシンプルなデータセットがあります。OS列にはコンピュータのオペレーティングシステムがリストされています。この架空のデータをデモンストレーションの目的で使用します。`train_df`には架空のデモンストレーショントレーニングデータが含まれます。一方、`test_df`には架空のデモンストレーションテストデータが含まれます。
架空のデモンストレーションケースでは、テストセットにはトレーニングセットに存在しないカテゴリ値が含まれています。この不一致が問題を引き起こします。
import pandas as pdtrain_df = pd.DataFrame({'OS': ['Windows', 'MacOS', 'Linux', 'Windows', 'MacOS']})test_df = pd.DataFrame({'OS': ['Windows', 'MacOS', 'Android', 'Unix' 'iOS']})
トレーニングデータでは、Windows、MacOS、Linuxの3つのオペレーティングシステムがあります。しかし、テストデータでは、Android、Unix、iOSを含む追加のカテゴリがあります。
`train_df.get_dummies()`で適合させたモデルは、`test_df.get_dummies()`からのテストデータとは互換性がありません。結果が一致しません。
pd.get_dummiesの問題点
ここでトレーニングデータとテストデータの両方にpd.get_dummies()
関数を適用すると、以下のような結果が得られます。
We will continue to update VoAGI; if you have any questions or suggestions, please contact us!
Was this article helpful?
93 out of 132 found this helpful
Related articles