2017-08-21 5 views
1

私は、次の要求を行うためのREST APIのモデルを使用しています:このリクエストから希望する値を取得する方法は?

def predict(path): 
    with open(path) as img: 
      res = vr.classify(images_file=img, threshold=0, classifier_ids=['food']) 
      print res 

私は私のスクリプトを実行すると、私が手:

{u'images': [{u'image': u'/tacos.jpg', u'classifiers': [{u'classes': [{u'score': 0.0495783, u'class': u'pizza'}, {u'score': 0.553117, u'class': u'tacos'}], u'classifier_id': u'food', u'name': u'food-test'}]}], u'custom_classes': 2, u'images_processed': 1} 

私は、より高い値を持つだけでクラスを取得したいと思いますが次の:

this is the corresponding class: tacos 

だから私は、所望の出力

0123を得るために私の機能を変更するためのサポートをお願いしたいと思います

答えて

1

python-native sorted関数を使用して、分類子のIDごとの値?印刷し

def predict(path): 
    with open(path) as img: 
     res = vr.classify(images_file=img, threshold=0, classifier_ids=['food']) 

     dict_of_higher_value_per_ = {} # in order to record and reuse values sooner or later. 
     for image in res['images']: 
      for classifier in image['classifiers']: 
       classes  = classifier['classes'] 
       classifier_id = classifier['classifier_id'] 
       sorted_scores = sorted(classes, 
             key=lambda class_:class_['score'], 
             reverse=True) 
       best_match = sorted_scores[0] # which corresponds to the best score since elements are sorted. 
       dict_of_higher_value_per_[classifier_id] = best_match 

       print "Classifier '{cid}' says this is the corresponding class: {class}".format(cid=classifier_id, 
                           **best_match) 

次のように明確となるように(あまりにも)大きなオブジェクト名を使用して、をゴルフコードを避け、あなたがしたいことがあり

Classifier 'food' says this is the corresponding class: tacos 
+1

本当にありがとう、私は本当にありがとうサポート – neo33

1

これは辞書なので、「クラス」を繰り返して最高のスコアを見つけることができます。

免責事項:私はpython2またはwatsonユーザーではありません。あなたは以上の1つの分類器を持っているのであれば、クラスを反復処理するクラス

res['images'][0]['classifiers'][0]['classes'] 

にアクセスするには

...

highest_class = ['', 0] 
for class in res['images'][0]['classifiers'][0]['classes']: 
    if class['score'] > highest_class[1]: 
     highest_class = [class['class'], [class['score'] 
print "this is the corresponding class: " + highest_class[0] 

今もちろん、あなたは別のものを持っている必要がありますあなたがその機能を必要とする場合は、ループの外側でループを繰り返してください(その機能が必要な場合)

+0

あなたが私の答えをdownvoted場合は、理由を説明できますか? – xNinjaKittyx

関連する問題