Neural Network with WEKA [Verified Model]

หลังจากได้ Model มาแล้วสิ่งที่เราต้องทำต่อไป คือ การนำโมเดลที่ได้นั้นมาตรวจสอบความถูกต้อง และนำไปผลที่ได้ไปปรับแต่ง Model ของเราจนได้ผลลัพธ์ออกมาเป็นที่น่าพอใจแล้วนำไปทดสอบกับข้อมูลจริงๆ โดยการตรวจสอบ Model ที่ได้มานั้นมีขั้นตอน ดังนี้ เปิดโปรแกรม WEKA และทำการ load model ที่ได้ save ไว้ขึ้นมาจาก Blog ตอนที่แล้ว มาตั้ง Test Options (ไม่แน่ใจมาจาก sense เพราะมันไม่มี doc ให้อ่าน) Supplied training set: เปิดไฟล์ data ที่เราจะมา Test กับ Model <<เลือกอันนี้>> จากนั้นไปเลือกไฟล์ Customer_for_std_test ดังรูป คลิกขวาที่ Model เลือก Re-evaluate model on current test set สังเกตุผลลัพธ์ที่ได้ ดังรูป ซึ่งจะมีจำนวนที่ทำนายถูก Correctly Classified Instances 119 รายการ ซึ่งคิดเป็น 59.5% ซึ่งเราจะต้องปรับให้มันถูกเยอะๆ จนกว่าจะพอใจ เราสามารถที่จะดูผลลัพธ์ที่ระบบมันทายได้เทียบกับคำตอบ โดยคลิกขวาที่ Model เลือก Visualize Classify error จากนั้นกด save จากนั้นมาเปิดดูด้วย arffViewer ตามรูป หรือจะดูจาก Confusion Matrix ก็ได้ ถ้าเราไม่พอใจก็กลับไปทำใน หัวข้อ “สร้าง Model” และมาปรับค่าในส่วนของข้อที่ 6 และ 9 แต่ถ้าเรา OK กับตัว Model เราสามารถนำ Model ที่ได้ไปใช้งานเพื่อทำนายกับข้อมูลจริงๆได้เลยครับ 😀 การทำ Neural Network คือ…

[SQLite] System.Data.SQLite.SQLiteConnection cannot be cast to …

C# Logo

เวันนี้เขียนโปรแกรม C# กับ SQLite อยู่ดีๆ Bulid ผ่านะ แต่ Runtime Error โดยมี Message แจ้ง ดังนี้ [A]System.Data.SQLite.SQLiteConnection cannot be cast to [B]System.Data.SQLite.SQLiteConnection. Type A originates from ‘System.Data.SQLite, Version=1.0.92.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139’ in the context ‘Default’ at location ‘C:\Users\Chatr_000\Desktop\InvConfig(AutoRegisDLL)\InvConfig\bin\Release\System.Data.SQLite.dll’. Type B originates from ‘System.Data.SQLite, Version=1.0.91.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139’ in the context ‘Default’ at location ‘C:\Windows\Microsoft.Net\assembly\GAC_32\System.Data.SQLite\v4.0_1.0.91.0__db937bc2d44ff139\System.Data.SQLite.dll’. หลังจากไล่ Code อยู่นานพบว่าในเครื่องที่ใช้ Dev มี SQLite อยู่ 2 Version คือ 1.0.91.0 กับ 1.0.92.0 ติดตั้งอยู่ ซึ่งผมได้แก้ไขโดย ถอนการติดตั้ง SQLite Version 1.0.91.0 ออกไป ซึ่งการอัพเกรด Version ของ SQLite DLL ควรทำการ Uninstall Version แก่ก่อนลง Version ใหม่เสมอ ครับ ถ้าไม่เอาออก Registry ของ Windows มันจะมองเป็น 2 Version แก้ไขการโปรแกรมใหม่ ทั้งใน app config และ Reference ของ Project ให้ Reference ไปยังไฟล์…

[JAVA] Abstract คือ อะไร และต่างกับ Interface อย่างไร

หลายๆคนคงสงสัยว่า Keyword Abstract มัน คือ อะไร และเมื่อไหร่ที่ควรจะใช้ วันนี้ผมมีตัวอย่างง่ายๆในการอธิบายนะครับ โดยอาจจะแทรกเนื้อหาเกี่ยวกับ interface เพิ่มเข้าไปด้วยครับ เพราะลายคนสับสนกันเยอะ  โดยผมขอเริ่มโจทย์ที่เราต้องใช้ Abstract Class ดังนี้ จงเขียน class Student ซึ่งประกอบด้วย data members ดังนี้ name (ชื่อนิสิต), test (อะเรย์ของคะแนน), NUM_OF_TESTS (ค่าคงที่เป็นจำนวนของ test) และ courseGrade (เกรดของวิชา) ให้สร้าง Constructor, methods get/set และ abstract method computeCourseGrade โดยมีวิธีการคำนวณต่างกันไปสำหรับนิสิตปริญญาตรี (UndergraduateStudent) และบัณฑิตศึกษา (GraduateStudent)ให้เขียน class UndergraduateStudent ซึ่งเป็น subclass ของ Student และ ทำการ implement method computeCourseGrade ตามเกณฑ์ต่อไปนี้คือ ถ้าคะแนนเฉลี่ย >= 70 ผ่าน (Pass) ถ้าคะแนนเฉลี่ย < 70 ไม่ผ่าน (Fail) ก่อนที่จะทำโจทย์ ผมอยากให้รู้จักคำศัพท์บางตัวก่อน Signature ของ Method คือ อะไร การกำหนดลักษณะของ Method name(ชื่อ method) + Parameter List(ตัวแปรที่จะส่งเข้าไป) Method Header คือ อะไร พูดง่ายๆ คือ Signature หรือการประกาศ Method ว่ามีซื่ออะไร รับอะไรมาบ้าง ส่วน Logic การทำงานของมันจะไปอยู่ใน Method Detail จ้า ดูตามรูปเลย จะมี pattern…

[JAVA] Increase Eclipse performance

config eclipse.ini เพิ่ม Performance ให้ Eclipse ——- -startup plugins –launcher.library plugins -product org.eclipse.epp.package.standard.product –launcher.defaultAction openFile –launcher.XXMaxPermSize 384M -showsplash org.eclipse.platform –launcher.XXMaxPermSize 384m –launcher.defaultAction openFile –launcher.appendVmargs -vmargs -Dosgi.requiredJavaVersion=1.7 -server -XX:PermSize=384m -XX:MaxPermSize=384m -Xss4m -Xms1G -Xmx1G -XX:MaxGCPauseMillis=10 -XX:+UnlockExperimentalVMOptions -XX:+UseG1GC

[C#] แสดง Bullet (ฺจุดลิสต์รายการ) ในโปรแกรมของเราได้อย่างไร

C# Logo

เมื่อเราพัฒนาระบบขึ้นมา ระบบต้องมีการโต้ตอบ หรือให้ข้อมูลต่างๆแก่ user ซึ่งถ้าเราแสดงตัวอักษรอย่างเดียวไป มันอาจจะทำให้อ่านยาก และไม่สวยงามด้วย วันนี้ผมมานำเสนอการพิมพ์ Bullet หรือจุดลิสต์รายการ เพื่อให้ข้อมูลแสดงออกมาให้ดูง่าย ดังนี้ ก่อนอีกเลย เราต้องรู้ว่าอักษร Bullet หรือ จุดนี่ มันมีค่า Unicode ค่าอะไร เมื่อประกาศค่าคงที่เรียบร้อยแล้ว เราสามารถนำใส่ต่อกับ String ที่ต้องการได้เลยครับ อันนี้ผมนำไปใช้เพื่อแสดงรายละเอียดการแก้ไขโปรแกรม หรือ change log ให้ดูได้ง่ายขึ้นนะครับ ตัวอย่างเมื่อ Run Program ครับ

ลดทุน ลดหุ้น แล้วได้อะไร ?

จากบทความที่แล้วที่ผมได้เขียนไปเกี่ยวกับ การ ลด Par ล้างหนี้ แล้วยังติดประเด็นว่า ถ้าเราไม่ลด Par มันจะเกิดอะไรขึ้น ? ก่อนอื่นเลยต้องถึงสมการนึงก่อน ทุนจดทะเบียน(ทุน) / จำนวนหุ้น = ราคา Par ถ้าเราลดราคา Par แล้วทุนจดทะเบียนลดลง แต่จำนวนหุ้นเท่าเดิม ถ้าเรามองกลับกัน ลดทุนจดทะเบียน แต่ไม่ลดราคา Par ดังนั้นจำนวนหุ้นลดลง แล้วจำนวนหุ้นที่ลดลง มันมีผลอะไรบ้าง ? อย่างแรกเลย คือ จำนวนหุ้นที่ลดลง แต่ราคาของหุ้นจะต้องเพิ่มขึ้นตามสัดส่วนที่ได้ลดลง ผู้อ่านอาจะงงเดียวผมของยกตัวอย่างเลยนะครับ บริษัท ก มีทุนจดทะเบียน 1,000 บาท โดยแบ่งจำนวนหุ้น 10,000 หุ้น ตอนนี้ราคา Par = 0.10 บาทต่อหุ้น ต่อมาอีก 1 ปี บริษัท ก ทำธุรกิจขาดทุนไป 500 บาท ทางผู้บริษัทเลยมีมิติลดทุนเพื่อล้างหนี้ที่ขาดทุนไป โดยไม่ลดราคา Par สังเกตุว่าราคา Par มันน้อยจดลดอีกไม่ได้แล้ว 1,000 – 5000(ทุน) / 0.10(ราคา Par) = 5,000 จำนวนหุ้น เมื่อเทียบจำนวนหุ้นเดิม ต่อ จำนวนหุ้นใหม่ คือ 10,000 : 5,000 ซึ่งถ้าเทียบเป็นอัตราส่วนแล้ว คือ 2 : 1 ตีความได้ว่า 2 หุ้นเดิม จะลดเหลือ 1 หุ้น โดยมีผลให้ราคาหุ้นเพิ่มขึ้น 2 เท่า ราคาหุ้น ไม่ใช่ราคา Par นะ ถ้าราคาหุ้นเดิม คือ 1 บาท เมื่อลดทุนแล้วราคาหุ้น…

[VBA] Merge ไฟล์ Excel หลายไฟล์

พอดีมีเพื่อนตอนมธัยมทักมา เพื่อให้ช่วยรวมข้อมูลไฟล์ Excel หลายๆไฟล์ แต่ตอนนั้นผมเตรียมสอบ Toeic อยู่เลยปัดไป แต่จริงๆแอบเขียน VBA เพื่อรวมไฟล์ Excel หลายๆไฟล์ มารวมใน Sheet เดียว โดยมี Code คร่าวๆ ดังนี้ถ้าว่างๆ เดี๋ยวมาอธิบาย Code นะ

Neural Network with WEKA [Create Model]

หลังจากเรา เตรียมข้อมูล เรียบร้อยแล้ว ขั้นตอนต่อมา คือ การสร้าง Model โดยทำต่อไปตามขั้นตอนเลยครับ มาที่ tab Preprocesses >> open file >> เลือกไฟล์ Customer_for_std_train.arff จะพบข้อมูลขึ้นมา โดยเราสามารถที่จะไปกดดูกราฟ เพื่อที่จะทำการดู กราฟ และสถิตต่างๆได้ ส่วนที่ 1: แสดง background ของข้อมูล ว่ามาจากไล์อะไร มีกี่ record ส่วนที่ 2: แสดง Attribute ทั้งหมด โดยเมื่อเราเลือกไปที่ตัวไหน จะมีรายละเอียดในสวนที่ 3 ส่วนที่ 3: แสดงสถิตพื้นฐาน และกราฟ มาที่ tab Classify >> เลือก choose ไปที่ function >> MultiLayer Preception คลิกขวาในบริเวณตามรูป เลือก show properties เพื่อที่เราจะไปปรับค่ามัน ตั้งค่าตามรูปเลยจ้า (ไม่แน่ใจมากนะ เพราะมาจากการทดลองกดดู เพราะมันไม่มี doc ให้อ่าน) GUI: True แสดงรูป Model Hidden Layer: ใส่ไปตาม default ก่อน Learning Rate: ใส่ค่า Weight อัตราการเรียนรู้ของข้อมูล Normalize Attribute: เข้าใจว่าแปลงค่า input อยู่ในช่วงของ sigmoid คือ -1 ถึง 1 มาตั้ง Test Options (ไม่แน่ใจมากนะ เพราะมาจากการทดลองกดดู เพราะมันไม่มี doc ให้อ่าน) Use training set: เอาไว้สร้าง Model <<เลือกอันนี้>>…