この問題のより良いタイトルを書く方法はわかりません。これは次のように動作します。私はいくつかのデータを入力したCSVファイルを持っています。 CSVファイルは次のようになります。このうちPython:pandas confusion matrix issue
14 tests runed: 6 passed and 8 failed with accuracy: 42.00%
Picture name ; Detected as ; Status
categ1_0.jpg ; categ8=0.875931 ; Failed
categ1_1.jpg ; categ8=0.553985 ; Failed
categ2_0.jpg ; categ2=0.994332 ; Passed
categ2_1.jpg ; categ2=0.994736 ; Passed
categ3_0.jpg ; categ3=0.97933 ; Passed
categ3_1.jpg ; categ3=0.825793 ; Failed
categ4_0.jpg ; categ4=0.63532 ; Failed
categ4_1.jpg ; categ4=0.520756 ; Failed
categ5_0.jpg ; categ5=0.999963 ; Failed
categ5_1.jpg ; categ5=0.999827 ; Failed
categ6_0.jpg ; categ6=0.99825 ; Passed
categ6_1.jpg ; categ6=0.475022 ; Failed
categ7_0.jpg ; categ7=0.9987 ; Passed
categ7_1.jpg ; categ7=0.982103 ; Passed
、私はこのPythonコード(コード作品)を使用して混同行列を抽出します。
import csv
import argparse
import pandas as pd
parser = argparse.ArgumentParser(description='Creating confusion matrix.')
parser.add_argument('-i', '--input', help='Input path/to/file.csv', required=True)
parser.add_argument('-ca', '--categ-path', nargs='+', help='Name of categories (do not separe by other characters)', required=True)
parser.add_argument('-oh', '--output-html', help='Output path/to/confusion_matrix.html', required=True)
args = parser.parse_args()
data = csv.reader(open(args.input, 'r'), delimiter=";", quotechar='|')
next(data)
next(data)
true_data = []
pred_data = []
for row in data:
if len(row) >= 2:
true_data.append(row[0])
pred_data.append(row[1])
true_data = [s.strip().split('_')[0] for s in true_data]
pred_data = [s.strip().split('=')[0] for s in pred_data]
y_true = pd.Series(true_data, name="Actual")
y_pred = pd.Series(pred_data, name="Predicted")
df_confusion = pd.crosstab(y_true, y_pred)
df_confusion.to_html(args.output_html)
しかし、私は次の行を変更した場合:
をy_true = pd.Series(args.categ_path, name="Actual")
これはもう機能しません。私がこれを言うとき、私はそれが予測されたカテゴリ全体を表示しないという事実を指しています。たとえば、作業バージョンの予測カテゴリがDetected as
カラムから取られたcateg8 | categ2 | categ3 | etc
である場合、非稼働バージョンでは、それらのカテゴリのうち3つだけ(すべてではない)が表示されます。
私が達成したいのは、実際のカテゴリ名をCSVファイルから取り出すのではなく、コマンドラインで指定することです。