中野智文

中野智文(VOYAGE GROUP)のコンピュータなどのメモ

値の閾値を決めるための正解率の変遷を表示するrubyスクリプト

2010-02-25 19:26:25 | ruby
値の閾値を決めるために、正解率の変遷をグラフに表示するスクリプトを作ったりしていたが、毎度専用のものをいちいち作るのが面倒なので、汎用のスクリプトを作った。
#!/usr/bin/ruby -Ku                                                                                           

# format:                                                                                                           
#   value label *other                                                                                              

data = []
label_sum = Hash.new(0)
while line = gets
  value,label,*others = line.chomp.split(/s/)
  data << [value.to_f,label,*others]
label_sum[label] += 1 end puts (label_sum.keys+['value','label']).join("t") data = data.sort_by{|value,*_|value} count = Hash.new(0) count_sum = 0 data.each do |value,label,*others| next if value.nil? accs = label_sum.keys.map do |lab| (count[lab]*2 + data.size - label_sum[lab] - count_sum).to_f/data.size end puts (accs+[value,label,*others]).join("t") count[label] += 1 count_sum +=1 end

入力は、値と(教師)ラベルが空白(タブも含む)で結合された形式。
例:
-0.0960945576671676 b
0.000668926019671334 a
-0.0453034616651888 b
-0.013224697525716 a
-0.00989926808532632 a
-0.0578652275798741 a
-0.00793814158245038 b
-0.00361290493367006 a
-0.0266724059683863 b
-0.0422791509316265 b


出力結果(タブ区切り):
a       b       value   label
0.5     0.5     -0.0960945576671676     b
0.4     0.6     -0.0578652275798741     a
0.5     0.5     -0.0453034616651888     b
0.4     0.6     -0.0422791509316265     b
0.3     0.7     -0.0266724059683863     b
0.2     0.8     -0.013224697525716      a
0.3     0.7     -0.00989926808532632    a
0.4     0.6     -0.00793814158245038    b
0.3     0.7     -0.00361290493367006    a
0.4     0.6     0.000668926019671334    a


最新の画像もっと見る

コメントを投稿

ブログ作成者から承認されるまでコメントは反映されません。