scikit-learn 0.12.1 を使用して次のことを試みています。
- LogisticRegression 分類子を訓練する
- 差し出された検証データで分類子を評価する
- この分類子に新しいデータをフィードし、観測ごとに最も可能性の高い 5 つのラベルを取得します
Sklearn は、1 つの特殊性を除いて、これらすべてを非常に簡単にします。分類子に適合させるために使用されるデータで、可能なすべてのラベルが発生するという保証はありません。可能なラベルは何百もありますが、そのうちのいくつかは利用可能なトレーニング データに含まれていません。
これにより、次の 2 つの問題が発生します。
- ラベル ベクトライザーは、以前に表示されなかったラベルが検証データに含まれている場合、それを認識しません。これは、可能なラベルのセットにラベラーを適合させることで簡単に修正できますが、問題 2 を悪化させます。
- LogisticRegression 分類子の predict_proba メソッドの出力は、[n_samples, n_classes] 配列です。ここで、n_classes は、トレーニング データに見られるクラスのみで構成されます。これは、predict_proba 配列で argsort を実行しても、ラベル ベクトライザーの語彙に直接マップされる値が提供されなくなったことを意味します。
私の質問は、分類器に可能なクラスの完全なセットを強制的に認識させる最良の方法は何ですか?それらの一部がトレーニングデータに含まれていない場合でも? 明らかに、データを見たことがないラベルについて学習するのに問題がありますが、私の状況では 0 は完全に使用可能です。