Command Line in Weka
จากครั้งที่แล้ว ครั้งนี้เราก็มาลอง ใช้พวกคำสั่ง CMD ใน Weka กันเถอะ ซึ่งแน่นอน เราก็ต้องลงโปรแกรม Weka กันให้เรียบร้อยก่อนนะครับ
ถ้าพร้อมแล้วก็ไปเริ่มกันเลย
ผมจะให้เตรียมไฟล์ Weka กันก่อนะครับ โดยไฟล์ที่ผมมีเริ่มให้ก็จะเป็นไฟล์ glass.arff สามารถ Dowload กันได้ตามลิงค์ด้านล่างนี้นะครับผม
ที่นี้ถ้ามีไฟล์พร้อมแล้วก็มาเริ่มกันได้เลยครับผม
จากนั้นให้เราไปที่ Folder ที่เราได้ทำการติดตั้ง Weka แล้วให้เราทำการ Copy ตัวที่ชื่อว่า Weka.jar มา เพื่อที่เวลาเราเขียนคำสั่งมันจะทำให้เราย่อไม่ต้องเขียนที่อยู่ของ weka.jar ครับ
เปิด Program Weka ขึ้นมาเลยครับ
คำสั่งแรกที่ผมแนะนำให้ลองนะครับก็จะเป็น
weka.core.Instances นะครับ
ฟังก์ชั่นนี้จะเป็นการทำงานโดยโชว์พวกค่าของ Instance ทั้งหมดที่เรามีในไฟล์ arff ของเรานะครับผม โดยการเขียนคำสั่งจะเป็นแบบนี้ครับ
java weka.core.Instances ตามด้วยพาทที่อยู่ไฟล์ของ arff ของเราครับ
/*คำสั่งการแปลง csv เป็น arff ตอนผมที่เรียนในห้องและกลับมาลองมันจะมีการติด error และใช้งานได้ไม่สมบูรณ์ครับ จึงไม่ขอแสดงให้ดูนะครับ แต่คำสั่งในการใช้จะอยู่ด้านล่างนี้นะครับ*/
java weka.core.converters.CSVLoader ที่อยู่ของไฟล์ CSV > ที่อยู่ใหม่ของ arff
ต่อไปจะเป็นการใช้งานการให้คำเฉลยแล้ว ที่นี้คำสั่งมันก็จะหลากหลายมาก ผมจะขอลองแค่ไม่กี่คำสั่งนะครับ
อันแรกก็คือ “Classifiers” ผมขอยกมาสองตัวอย่างก็คือ J48(Desitions Tree) และ Neural Network
J48 (Desition Trees)
คำสั่งของมันก็คือ java weka.classifiers.trees.J48 -t ตามด้วยที่อยู่ไฟล์ arff
ถ้าเกิดเราอยากดูว่า สามารถ -อะไรเพิ่มได้อีกสามารถใช้คำสั่ง
ต่อไปเป็น Neural Network นะครับ
Neural Network
คำสั่งของมันก็คือ java weka.classifiers.functions.MultilayerPerceptron -t ตามด้วยที่อยู่ไฟล์ arff
/*-t ในที่นี้คือ training set นะครับผม*/
ต่อไปเป็นเรื่องของ Clustering ผมจะขอยกตัวอย่างการใช้ K-mean มาแล้วกันนะครับ
K-mean Algorithms
คำสั่งที่ใช้เลยนะครับคือ java weka.clusterers.SimpleKMeans -N จำนวนกลุ่มที่เราอยากแบ่ง -t ตามด้วยไฟล์ arff ของเรา
ต่อไปจะเป็นเรื่องของ Associations นะครับผม ผมก็ขอยกตัวอย่างจาก Apriori มานะครับผม
Apriori Algorithms
คำสั่งที่ใช้ก็คือ java weka.associations.Apriori -C ค่าที่ต้องการ -M ค่าที่ต้องการ -t แล้วตามด้วยไฟล์ arff
ที่นี้ -C กับ -M คืออะไรกัน ค่านั้นมันก็คือ
— ค่า C นั้นคือค่า minimum confidence ส่วนค่า M นั้นคือค่า minimum support นั้นเอง สำครับคนที่เรียนสาขาเดียวกับผมสามารถทำความเข้าใจเพิ่มได้ในวิชา data mining บทของ Association rules นั้นเองครับ
ที่มันแดงแบบนี้ก็เพราะว่า การทำ Apriori นั้นค่านั้นจะต้องเป็น Nominal ซะก่อนนะครับ จะเป็นแบบ Numeric ไม่ได้ ก็จะมีคำสั่งที่เอาไว้ใช้แปลงก็คือ
java weka.filters.unsupervised.attribute.NumericToNominal -i ตามด้วยที่อยู่ไฟล์ที่เราจะเปลี่ยน -o ชื่อใหม่ที่เราอยากจะตั้ง
/* ทุกคำสั่งสามารถใช้ -h เพื่อดูได้นะครับว่ามีอะไรเพิ่มเติมบ้าง */
ในเมื่อเราเองก็พอเข้าใจการใช้แล้วจากนั้น สมมุติว่าเราอยากได้ไฟล์ที่เราทดสอบนั้นไปทำเป็น Model แล้วเราจะทำยังไงละ แน่นอนครับ ทำตามนี้ได้เลยครับผม
ยกตัวอย่างว่าผมจะเอา J48 ตัวนี้ไปทำเป็น model นะครับผม ก็จะเขียนได้เป็นแบบนี้ครับ
java weka.classifiers.trees.J48 -t ชื่อไฟล์ของเรา -x 10 -d ชื่อโมเดลของเรา
ตรงส่วน -x 10 ตรงนี้คือการใช้ Cross-validation แล้วกำหนดให้เป็น 10 นะครับผม เหมือนกับ ตรงนี้เลย
เอาละไปลองทดสอบคำสั่งกันดีกว่าครับผม
เอาละ เรามาลองกับ Unseen เรากันดีกว่าครับผม
โดยวิธีการทำ unseen คือการทำให้ class(คำเฉลย) นั้นกลายเป็น ? จากนั้นก็ให้เราทำการ save เป็นไฟล์ arff ใหม่นะครับ
พอได้แบบนี้มาแล้วก็ให้มาทดสอบกับ Model เลยครับผม
โดยคำสั่งที่เอาไว้ใช้ในการรัน model ก็คือตามนี้นะครับ
java weka.classifiers.trees.J48 -l ที่อยู่modelของเรา -T ที่อยู่ไฟล์ unseen ของเรา
ส่วนตัว -l คือการ load โมเดลมาใช้นะครับ -T คือการใช้ Test set ในการทำงาน
ส่วนด้านหน้านั้นให้ตรงกับ รูปแบบของไฟล์ที่เราเอามาทำ model เช่น model ทำมาจาก J48 ก็ต้องใช้ J48 เป็นตัวรันนะครับ ใช้ apriori ทำ model ก็ต้องใช้ apriori รันนะครับใช้ตัวอื่นมันจะผิดพลาดได้นะครับ
เท่านี้ก็เป็นการจบการเรียนเกี่ยวกับ command แล้วนะครับ ต่อไปเรื่องหน้าจะเป็นการใช้ sql ต่อเข้ากับ weka นะครับผม ขอบคุณที่ทนอ่านของผมมาจนจบนะครับ