因為我們model設置的輸出函數是softmax函數,所以可以看到跑出來的是個array,裡面的每一listr就是當對應於一個圖片預測的機率,例如我們可以看一下第一個:
第八個元素值是0.9977....換句話就是99%的機率會是7。當然這種結果並不是很方便,所以我們可改用.predict.classes(),換句話就是輸出已分類(class)的結果:
這樣子很明顯第一筆預測結果是7,第二個是2,很直接了當。
當然這樣子看預測的結果還是虛虛的,有種不夠札實的結果的感覺,因此我們想真實"看"到結果,那就把最後預測繪出來好了:
這邊顯示了第340至ˇ342筆資料,其中可看到第340筆圖片是5,但預測值卻是3。
接下來利用pandas中的幾個功能進一步分析結果(關於pandas可看這連結),輸入.crosstab這指令,可以檢視兩種資料間的關係,此表格稱為confusion matrix(混淆矩陣),可以清楚看到在對角線的部分(數字很大)就是正確預測的部分,而其他預測值當然就是錯誤的部分了。例如標籤是4但預測成2的有5筆資料。
我們或許也想知道這5筆資料到底長得怎樣,先建立下列標籤與預測值對照的完整表格,先看前兩筆資料:
有了這個表可以看看哪些是標籤為4但卻是預測為2的資料:
接下來print出第247筆資料看看:
確實有跟2有87%像啊,也難怪會預測錯誤。
參考資料
TensorFlow+Keras深度學習人工智慧實務應用
沒有留言:
張貼留言