Neural Network with WEKA รวมปัญหาที่เกิดขึ้น

ในระหว่างที่ทำตาม Workshop: Neural Network with WEKA หลายๆคนอาจจะประสบปัญหาในระหว่างการทำงาน ผมเลยได้รวมรวมข้อมูลไว้ ดังนี้ครับ ปัญหา Train and test set are not compatible สาเหตุ: เกิดจากไฟล์ .arff ของเรามีส่วนการประกาศ attribute ที่ไม่เหมือนกัน หรืออาจะมี Character บางตัวแปลกปลอมอยู่ในไฟล์ ฉบับภาษาอังกฤษ 1.Make sure that the train and test sets have EXACTLY the same attributes (fields),including last entry:@attribute Class {MED,MGL,RHB,EPD,JPA} 2.If the attribute descriptions appear to be identical but you still get the same error, you may have an invisible control character in one of the files. Remove the attribute descriptions from the test file and replace them with the attribute descriptions from the train file. That may help. 3.You can also run Weka from…

Neural Network with WEKA [Deploy Model]

เมื่อเราได้ Model แล้ว ขั้นตอนต่อไป คือ นำ Model ของเราไปใช้กับข้อมูลจริงๆ ที่อาจจะมาจากแบบสอบถาม, ข้อมูลการรายการซื้อ-ขาย เป็นต้น โดยในที่นี้เราจะมีข้อมูลของกลุ่มตัวอย่างที่ได้จากแบบสอบถาม เพื่อนำมาทำนายว่าพวกเขาเหล่านั้นซื้อจักรยาน หรือไม่ครับ เอกสารประกอบการทำ Workshop นะครับ [wpdm_file id=4] ข้้นตอนการทดสอบง่ายๆ ดังนี้ครับ เตรียมไฟล์ข้อมูลที่ได้ให้เป็น format ที่เหมาะสม คือ ไฟล์ .arff โดยสำหรับ Attribute purchaseBike เราไม่ทราบค่า ให้ใส่เป็น ? เพื่อบอกโปรแกรม ดังรูป นำไฟล์ที่ได้ไปทดสอบตาม Neural Network with WEKA [Deploy Model] โดยทำตามขั้นตอนเฉพาะข้อที่ 1 – 4 ครับ เมื่อทำข้อที่ 3 เสร็จคลิกขวาที่ Model เลือก Visualize Classify error จากนั้นกด save จากนั้นมาเปิดดูด้วย arffViewer เพื่อหา predictedpurchaseBike โดยสังเกตุคอลัมน์ที่ขึ้นต้นด้วยคำว่า predicted ชื่อ attribute โดยเราสามารถดูผลลัพธ์ได้ ดังรูป หากต้องการข้อมูลเพิ่มเติม ก่อนขั้นตอน Re-evaluate model on current test set ให้ทำการเลิอก more option และตั้งค่าเพิ่มเติม ดังรูป เมื่อลองทดสอบข้อมูลอีกครั้ง เราสามารถดูรายละเอียดการทดสอบได้ ลองสังเกตุผลลัพธ์ [YES, NO] กับค่า Probability ดูนะครับ

เปิดไฟล์จาก Visual Studio เวอร์ชั่นสูงๆ ด้วย Visual Studio 2010

Visual Studio

บางครั้ง เราต้องการดูโครงสร้างของโปรแกรมที่ทำด้วย Visual Studio เวอร์ชั่นสูงๆ แต่เรามีเพียงแค่ Visual Studio 2010 เท่านั้น วันนี้ผมมีวิธีแก้ไขค่า Config นิดหน่อยเพียงให้เราสามารถเปิดดูได้ ใช้อ่าน และไล่ Code ดูได้ครับ ส่วนที่ 1 แก้ไข Solution File(.sln)เปิด Solution File ด้วยโปรแกรม Text Editor เช่น Notepad++ จากนั้นแก้ส่วนหัวของ Solution File ส่วนที่ 2 แก้ไข Project File (.csproj หรือ .vbproj)เปิด Project File ด้วยโปรแกรม Text Editor จากนั้นให้แก้ TargetFrameworkVersion ให้เหมาะสม เช่น ถ้าใช้ Microsoft Visual Studio 2010 ให้แก้ TargetFrameworkVersion เป็น 4.0 แทน หมายเหตุ:

Set an alternative Visual Source Safe diff tools

หลายครั้งที่ลองใช้ตัว Diff ไฟล์ของ Visual Source Safe แล้วพบว่ามันห่วยมาก 5555 ทั้งมีปัญหาตัวพิม์เล็ก-ใหญ่ บราๆ วันนี้ผมวิธีการ Set ให้ Visual Source Safe เรียกใช้ Diff Tools ตัวอื่นๆได้ครับ โดยทำตามวิธีการ ดังนี้ Login เข้าโปรแกรม Visual Source Safe ไปที่ Menu Tools >> Options เลื่อนไปหา Tab “Custom Editors” จากนั้นกำหนดค่า ดังนี้ Operation: เลือกเป็น File Difference File Extension: กำหนดเป็น “.*” (ไม่ต้องใส่เครื่องหมายคำพูด) โดยค่าที่กำหนดนี้ หมายถึง ไฟล์ทุกนามสกุล Command Line: Path ที่ใช้เรียกตัว Diff Tools ตัวอื่นขึ้นมา โดยผมได้ลอง 2 โปรแกรม ดังนี้ ถ้าเป็นโปรแกรม WinMerge ให้กำหนดค่า ดังนี้ C:\Program Files\WinMerge\WinMergeU.exe /e /x /wl /wr %1 %2 ถ้าเป็นโปรแกรม ProjectDiff ให้กำหนดค่า ดังนี้ C:\Program Files\Totato\ProjectDiff\ProjectDiff.exe -c /t:t %1 %2 /r:”icc|ite|ieol” จากนั้นกด ADD เลยครับ หมายเหตุ: Config นี้ต้องทำในแยกในแต่ละ Visual Source Safe Database ครับ ส่วน Path ของโปรแกรม ถ้าเป็น Windows…

[JAVA] Access Modifier ของ Class/Method แต่ละตัวเหมือน หรือต่างกันอย่างไร

Q: public, private, protect ที่เราใช้ใน Class และ Method ต่างๆ มันเหมือน หรือ แตกต่างกันอย่างไรA: จะแยกตอบที่ละอันตามนี้ เดี๋ยวของเพิ่ม default (เกิดจากการที่เราไมได้กำหนด Access Modifier ให้กับ Class/Method) ลงไปด้วยและกัน- private >> ใช้ได้เฉพาะ class มันเองเท่านั้น- protect >> ใช้ได้เฉพาะ Class แม่(Super Class)กับ Class ลูก(Sub Class) ใช้ได้เท่านั้น- default >> ใช้ได้เฉพาะ Package เดียวกันเท่านั้น- public >> ใช้ได้หมด 

Cohesion VS Coupling

ในชีวิตการทำงานจริง การพัฒนาออกแบบ Software ระบบหนึ่งขึ้นมา คงไม่ได้มีเพียง File เดียว หรือ Method Main อย่างเดียวแน่ๆ เหมือนตอนที่เรียนอยู่ในมหาวิทยาลัย โดยการทำงานจริงนั้น เราต้องแบบระบบงาน Software ที่ทำอยู่ออกมาเป็น Module หรือ Component ต่างๆ และท้ายที่สุดได้ Class Diagram แต่เมื่อออกแบบเสร็จแล้ว เราจะมั่นใจได้อย่างไรว่า Code ที่เราออกแบบนั้น ไม่มีการทำงานที่ซับซ้อน หรือมีโครงสร้างที่ซับซ้อนมากเกินไป จนทำให้ในอนาคตเมื่อมีการแก้ไข Code นั้นแล้วอาจจะทำให้กระทบไปทั้งระบบ แล้วเราจะมีวิธีจัดการอย่างไงให้สามารถลดความซับซ้อนของระบบได้ ผมขอแนะนำแนวคิด 2C ได้แก่ Cohesion และ Coupling (ลองดูรูป ด้านล่างครับ อยากได้แบบไหนดี) Cohesion คือ อะไร ? Cohesion คือ การบอกถึงความสอดคล้องกันของการทำงานในหน่วยใดๆ เช่น ถ้าเรามองในมุมของ Coding ในระดับ Class ความสอดคล้องกันของ Class นั้น หมายถึง Method การทำงานต่างๆที่ควรจะเป็นไปในทางเดียวกัน เช่น แล้วทำไมเราต้องทำให้เกิดความสอดคล้อง (Cohesion) หละ ? เพราะ เราต้องการจัดกลุ่มของการทำงานให้เป็นหมวดเดียวกัน ให้อยู่ใน Class เพื่อให้ง่ายต่อการ Maintain และการเพิ่มเติมการทำงานในอนาคต ลองมองง่ายๆ ถ้า Code Export Excel (.CSV) มันมีการทำงานกระจายไปหมดทุก Module ถ้าเปลี่ยน Requirement ที = งานเข้า ชนิดของ Cohesion จากแย่ที่สุด ไป ดีที่สุด ระบบที่ดีความออกแบบให้มี Cohesion สูง (งานที่เหมือนกัน ควรอยู่ในกลุ่มเดียวกัน) Coupling คือ อะไร ? Coupling…

FizzBuzz Problem without if (ปัจฉิมบท)

FizzBuzz With Out If Part 2 (AI Generate Image via Bing AI)

จากบทความที่แล้ว แสดงวิธีการเขียน Code กับโจทย์ปัญหา FizzBuzz โดยไม่ใช่ IF กันแล้วนะครับ แต่ผมยังทิ้งท้ายไว้อีกปัญหานึง คือ ถ้ามีเงื่อนไขเพิ่มขึ้นมาหละ โดยให้แสดง WOOF ้เพิ่ม ถ้าตัวเลขนั้นหาร 7 ได้ลงตัว (อ้างอิงจาก WIKI FIZZ BUZZ WOOF ) เราจะมีวิธีการแก้ปัญหาอย่างไรนะครับ โดยผมขอทวนวิธีการที่ใช้แก้ปัญหาใน Blog ตอนที่แล้วก่อนนะครับ

FizzBuzz Problem without if (ปฐมบท)

FizzBuzz With Out If Part 1 (AI Generate Image via Bing AI)

จากบทความที่แล้ว FizzBuzz Problem ไปนะครับ ต่อไปผมลอง Refactor Code อีกรอบ โดยมีเงื่อนไขว่าห้ามใช้ IF ในส่วนของ Logic Fizz และ Buzz ทำไมถึงต้องห้ามใช้ IF เพราะ การใช้ IF ส่งผลให้เกิดความมักง่ายของ Developer ทำให้เกิดปัญหาในการแก้ไข หรือพัฒนา Module เพิ่มเติม ต้องไปแก้ Code จนเกินความจำเป็น และทำให้เกิด Defect(ฺBug) เพิ่มขึ้นด้วย ซึ่งมีแนวคิดทางวิชาการมาสนันสนุนแนวคิดนี้อย่าง The Open Close Principle (OCP) และ High Coupling & Low Cohesion (สามารถอ่านเพิ่มเติมได้ใน Blog ผมครับ ^__^) หลังจากรู้ที่มาคร่าวๆแล้ว เรามาลองทำ FizzBuzz โดยไม่ใช้ IF กันนะครับ

FizzBuzz Problem

FizzBuzz Intro (AI Generate Image via Bing AI)
FizzBuzz เป็นโจทย์ฝึกสมองเด็ก ที่ใช้ช่วยในการเรียนรู้เรื่องการหาร ซึ่งสามารถไปอ่านกฏเพิ่มเติมได้จากใน WIKI: FIZZBUZZ ครับ แต่บทความนี้ผมขอนำกฏของ FizzBuzz มาประยุกต์กับการเขียนโปรแกรม