未定義メトリック警告: F スコア エラー
scikit-learn の metrics.f1_score を使用して F スコアを計算すると、次の警告が表示される場合があります。
「未定義メトリック警告: F スコア」は定義が正しくなく、予測サンプルのないラベルで 0.0 に設定されています。
警告について
この警告は、真のラベル (y_test) 内の一部のラベルが存在する場合に発生します。 ) は予測ラベル (y_pred) には表示されません。このような場合、これらの予測不可能なラベルの F スコアは計算できず、0.0 であると想定されます。
例
ラベル '2' の次の例を考えてみましょう。は予測に含まれていません:
y_test = [1, 10, 35, 9, 7, 29, 26, 3, 8, 23, 39, 11, 20, 2, 5, 23, 28, 30, 32, 18, 5, 34, 4, 25, 12, 24, 13, 21, 38, 19, 33, 33, 16, 20, 18, 27, 39, 20, 37, 17, 31, 29, 36, 7, 6, 24, 37, 22, 30, 0, 22, 11, 35, 30, 31, 14, 32, 21, 34, 38, 5, 11, 10, 6, 1, 14, 12, 36, 25, 8, 30, 3, 12, 7, 4, 10, 15, 12, 34, 25, 26, 29, 14, 37, 23, 12, 19, 19, 3, 2, 31, 30, 11, 2, 24, 19, 27, 22, 13, 6, 18, 20, 6, 34, 33, 2, 37, 17, 30, 24, 2, 36, 9, 36, 19, 33, 35, 0, 4, 1] y_pred = [1, 10, 35, 7, 7, 29, 26, 3, 8, 23, 39, 11, 20, 4, 5, 23, 28, 30, 32, 18, 5, 39, 4, 25, 0, 24, 13, 21, 38, 19, 33, 33, 16, 20, 18, 27, 39, 20, 37, 17, 31, 29, 36, 7, 6, 24, 37, 22, 30, 0, 22, 11, 35, 30, 31, 14, 32, 21, 34, 38, 5, 11, 10, 6, 1, 14, 30, 36, 25, 8, 30, 3, 12, 7, 4, 10, 15, 12, 4, 22, 26, 29, 14, 37, 23, 12, 19, 19, 3, 25, 31, 30, 11, 25, 24, 19, 27, 22, 13, 6, 18, 20, 6, 39, 33, 9, 37, 17, 30, 24, 9, 36, 39, 36, 19, 33, 35, 0, 4, 1] print(metrics.f1_score(y_test, y_pred, average='weighted'))
このコードは、 warning.
なぜ時々のみ?
ほとんどの Python 環境では特定の警告が 1 回しか表示されないため、警告は F スコアが初めて計算されるときにのみ表示されます。ただし、この動作は、warnings.filterwarnings('always') を使用して変更できます。
警告を回避する方法
警告の表示を回避するには、次のいずれかを設定できます。 scikit-learn をインポートする前に warnings.filterwarnings('ignore') を実行するか、F スコアを計算するときに関心のあるラベルを明示的に指定します。以下:
# Ignore warnings warnings.filterwarnings('ignore') metrics.f1_score(y_test, y_pred, average='weighted') # Explicitly specify labels unique_labels = np.unique(y_pred) metrics.f1_score(y_test, y_pred, average='weighted', labels=unique_labels)
以上がScikit-learn の F1 スコアで「UnknownMetricWarning」が生成されるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。