ホームページ  >  記事  >  バックエンド開発  >  Scikit-learn の F1 スコアで「UnknownMetricWarning」が生成されるのはなぜですか?

Scikit-learn の F1 スコアで「UnknownMetricWarning」が生成されるのはなぜですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-11-19 21:12:02533ブラウズ

Why Does Scikit-learn's F1-Score Produce an

未定義メトリック警告: 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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。