2012-04-27 10 views
4

私は分類の目的でPyBrainのネットワークを訓練しました。予想したようにしかし、私はPyBrainどのようにnet.activateの結果を解釈するのですか?

 


classes = ['apple', 'orange', 'peach', 'banana'] 

data = ClassificationDataSet(len(input), 1, nb_classes=len(classes), class_labels=classes) 

data._convertToOneOfMany()     # recommended by PyBrain 

fnn = buildNetwork(data.indim, 5, data.outdim, outclass=SoftmaxLayer) 

trainer = BackpropTrainer(fnn, dataset=data, momentum=m, verbose=True, weightdecay=wd) 

trainer.trainUntilConvergence(maxEpochs=80) 

# stop training and start using my trained network here 

output = fnn.activate(input) 

 

を行うとき、私は「出力」の数値を得るが、直接予測クラスラベルを決定する方法はありますか?存在しない場合でも、「出力」の値をクラスラベルにどのようにマップできますか?ご協力ありがとうございました。

答えて

4

「出力」の数値を取得すると言うと、スカラー(配列ではない)を意味しますか?私の理解から、あなたは4つの値の配列(つまり、できるだけ多くの出力クラスを持っている)を得たはずです。その配列の最大値は、クラスのインデックスに対応します。 PyBrainはそれを抽出するためのユーティリティ機能を提供する場合、私は知りませんが、あなたはこのようにそれを行うことができます。

class_index = max(xrange(len(output)), key=output.__getitem__) 
class_name = classes[class_index] 

ところで、あなたは、実際にデータセット内のデータを記入するステップを省略。

関連する問題