2018年1月26日 星期五

Keras (預測)

(上一篇)我們已利用Keras建立模型、訓練及測試模型了,下一步當然就是要拿模型實際預測看看,因此我們利用model.predict()的指令預測,( )內的argument輸入測試的資料:

因為我們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深度學習人工智慧實務應用




沒有留言:

張貼留言