Hướng dẫn dùng f1_score python
Lượt xem: 8,610 Show Xin chào các member Mì AI, hôm nay chúng ta cùng đi tiếp series “Oánh giá” model AI theo cách Mì ăn liền với một bài thực hành đánh giá model bằng Python. Trong 2 bài trước trong series chúng ta đã làm quen với các khái niệm Loss, Accuracy, Precision, Recall, F1 Score. Bạn nào chưa đọc có thể đọc tại đây:
Sau khi mình đăng hai bài này thì các bạn có comment là khá dễ hiểu tuy nhiên vẫn yêu cầu có một bài thực hành cho thông hẳn luôn. Do đó hôm nay chúng ta cùng nhau thực hành một chút nha. Okie, go go go! Phần 1 – Lựa chọn bài toánDo là để ví dụ cho các bạn hiểu nên chúng ta sẽ chọn một bài toán đơn giản thôi. Sau khi đã hiểu nguyên lý cách làm, các bạn có thể áp dụng với bài toán bất kì nhé! Bài toán hôm nay chúng ta làm phải gọi là 1 bài toán kinh điển đó là phân loại hoa lan hay còn gọi là IRIS Classification. Bài toán nầy kinh điển đến lỗi Sklearn tích hợp luôn data để lúc cần dùng khỏi cần load từ bên ngoài. Haha! Bài toán này chúng ta sẽ dựa vào thông tin bông hoa lan để dự đoán tên loài hoa lan. Ta có dữ liệu như sau:
Bây giờ chúng ta cần train model sao cho khi đưa vào các thông số bông hoa thì model sẽ predict ra tên loài hoa. Bài này là bài sample, có nhiều cách làm như SVM, KNN, …. nhưng hôm nay mình sẽ dùng hẳn Mạng nơ ron. Lý do? Đơn giản vì mình muốn demo cho các bạn cách oánh giá model là chính mà :D. Giải bài toán là phụ thôi. Phần 2 – Triển khai bài toánLoad dữ liệu bài toánNhư mình đã nói, bài này không cần dùng dữ liệu ngoài. Các bạn load thẳng trong sklearn là okie:
Và chúng ta sẽ có dữ liệu in ra như sau là chuẩn rồi:
Tiền xử lý dữ liệu và chia dữ liệu train, testDữ liệu đã load thành công, bây giờ ta cần chuẩn hóa một chút. Ở đây output đang có dạng là 0,1,2 và do đó ta cần đưa về OneHot cho tiện train model với hàm Softmax:
Và đây, dữ liệu y – output đã được transform thành One hot vector:
Cài đặt mạng Nơ ronMọi thứ đã sẵn sàng bây giờ chúng ta sẽ cài đặt mạng NN thử nhé. Để đơn giản hóa mình sẽ dùng một mạng đơn giản với vài lớp thôi:
Và đây là kết quả trên màn hình
Để ý các bạn sẽ thấy mấy thông số hay ho:
Train model và evaluate trên tập test
Mình train với batch_size=32 và 10 epochs nhưng kết quả khá tốt với Test Loss là 0.263 và Test Accuracy là 0.9666
Như vậy là bài toán của chúng ta đã xong về mặt triển khai. Nhưng như vậy thì cụt quá nhở. Chúng ta hãy thêm thắt tý cho nó phong phú đa dạng nhở. Đi tiếp nhé! Phần 3 – Đánh giá model qua Graph và các thông số Precision , Recall và F ScoreVẽ đồ thị loss và accuracyBây giờ việc đầu tiên là ta sẽ in ra đồ thị Loss và Accuracy nhé. Để làm việc đó mình tăng số epoch lên 200 cho đồ thị nó đẹp:
Và đây là đồ thị này! Nhìn có vẻ chuyển nghiệp vê lờ anh em nhở =)). Chúng ta ko bàn về độ chính xác của model nhé, thực hành cách đánh giá thôi 🙂 Tính toán Confusion Matirix, Precision, Recall và F1-ScoreRồi như vậy là loss và acc đã xong, bây giờ tính mấy cái món này cho nó có vẻ pờ rồ nào. Mình nói có vẻ pro vì thư viện sklearn đã hỗ trợ khá tốt rồi, anh em chỉ cần gọi ra cho đúng là okie. Anh em nào cần tìm hiểu chi tiết các hàm thì có đây luôn: tại đây.
Đó, thư viện tận răng và bây giờ là gọi :
Đoạn source trên anh em chú ý mấy điểm sau:
Và kết quả ngon lành cho anh em:
Đến bước này anh em lại thấy rằng cái Confusion matrix có vẻ chưa clear lắm, nhìn như này thì ai biết phán như nào. Okie! Ta lại vẽ nó ra cho trực quan:
Ở đây ta dùng thư viện pandas và searborn để vẽ đồ thị Heatmap và kết quả đây rồi: Rồi bây giờ thì rõ như ban ngày và phán thôi nhỉ?
Kết luận, model ngon lành kaka! Và do bạn đã kiên nhẫn đọc đến cuối bài nên quà tặng mình dành cho bạn là source mình đã code sẵn tại đây. Các bạn có thể tải về và thử luôn nhé. Okie, vậy là mình đã guide các bạn cách triển khai đánh giá model phân loại classify theo các món Loss, Acc, Pre, Recall, Confusion Matrix…. Mình xin dừng bài này lại đây. Hẹn gặp lại các bạn trong các bài tiếp theo nhé! Hãy join cùng cộng đồng Mì AI nhé! Fanpage: http://facebook.com/miaiblog |