2016-07-10 11 views
0

私はsklearnからいくつかの既製の分類子を作りました。分類子が正しく実行され、正しく予測されないことがわかっているいくつかのシナリオがあります。 sklearn.svmパッケージはエラーなしで実行されますが、次の警告が表示されます。Python - 警告を単純なメッセージに置き換える

~/anaconda/lib/python3.5/site-packages/sklearn/metrics/classification.py:1074: UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 due to no predicted samples. 
    'precision', 'predicted', average, warn_for) 

私はこの警告を抑制し、代わりにstdoutへのメッセージに置き換え、例えば言う、"poor classifier performance"たい。

一般にwarningsを抑制する方法はありますか?

答えて

2

すべての警告を抑制すること-Wignoreと簡単です(warning flag docsを参照)

warningsモジュールは、(ちょうどあなたの警告タイプを無視する)フィルタと、いくつかの細かい調整を行うことができます。

(それを微調整するためにモジュール内のいくつかのAPIがないと仮定した場合)だけあなたの警告をキャプチャし、"Testing Warnings"から適応warnings.catch_warnings context managerとコードを使用して行うことができる特別な何かをやって:

import warnings 

class MyWarning(Warning): 
    pass 

def something(): 
    warnings.warn("magic warning", MyWarning) 

with warnings.catch_warnings(record=True) as w: 
    # Trigger a warning. 
    something() 
    # Verify some things 
    if ((len(w) == 1) 
      and issubclass(w[0].category, MyWarning) 
      and "magic" in str(w[-1].message)): 
     print('something magical') 
+0

働いていました。スニペットが生成して一般的なメッセージで報告できるすべての警告を取得することにしました。 self.clfObj.fit(self.train_x、self.train_y) self.preds =リスト(self.clfObj.predict(self.test_x)) 自己:ワットとしてwarnings.catch_warnings(レコード=真)と ' .predProbabs = self.clfObj.predict_proba(self.test_x)[:, 1] self.evalClassifierPerf( )len(w)> = 1の場合: print( "Poor Classifer detected") ' –

関連する問題