Introduction to Weka: Application approach

30,149 views

Published on

This presentation shows how to integrate Weka with your application.

Published in: Technology
7 Comments
37 Likes
Statistics
Notes
No Downloads
Views
Total views
30,149
On SlideShare
0
From Embeds
0
Number of Embeds
19,696
Actions
Shares
0
Downloads
0
Comments
7
Likes
37
Embeds 0
No embeds

No notes for slide

Introduction to Weka: Application approach

  1. 1. (data)3 base|warehouse|mining Store. Analyze. Predict. Introduction to Weka: Application approach โดย เอกสิทธิ์ พัชรวงศ์ศักดา5 5 หสม. ดาต้า คิวบ์5 http://facebook.com/datacube.th5 http://www.dataminingtrend.com5 1
  2. 2. 2 About Us (data)3 !  ชื่อ: เอกสิทธิ์ พัชรวงศ์ศักดา5 !  การศึกษา5 !  ปริญญาตรี วิศวกรรมคอมพิวเตอร์ มหาวิทยาลัยเกษตรศาสตร์5 !  ปริญญาโท วิศวกรรมคอมพิวเตอร์ มหาวิทยาลัยเกษตรศาสตร์5 !  ศึกษาต่อระดับปริญญาเอก วิทยาการคอมพิวเตอร์ สถาบันเทคโนโลยีนานาชาติสิรินธร มหาวิทยาลัยธรรมศาสตร์ (คาดว่าจะสำเร็จการศึกษาในเร็ววันนี้ !)5 !  ประสบการณ์1 ! วิทยากรประจำหลักสูตร Basic Data Mining with Weka จัดโดย หสม. ดาต้า คิวบ์ 9 ! เขียนบทความเกี่ยวกับการใช้งานโปรแกรม Weka ลงในนิตยสาร OpenSource2Day9 http://facebook.com/datacube.th http://www.dataminingtrend.com
  3. 3. 3 About Us (cont’) (data)3 ! ประสบการณ์:9 ! วิทยากรรับเชิญเกี่ยวกับการใช้ Data Mining และ Weka 9 ! มหาวิทยาลัย: SPU, KU, KMUTNB, BU, NRRU9 มหาวิทยาลัยศรีปทุม5 มหาวิทยาลัยเกษตรศาสตร์5 มหาวิทยาลัยเทคโนโลยี5 พระจอมเกล่าพระนครเหนือ5 มหาวิทยาลัยบูรพา5 มหาวิทยาลัยราชภัฏ5 นครราชสีมา5 ! บริษัทเอกชน: TPA, DTAC, REPCO (SCG), SSUP Group, Mono Technology9 http://facebook.com/datacube.th http://www.dataminingtrend.com
  4. 4. About Us (cont’) 4 (data)3 !  ผลงานที่เคยมีส่วนร่วม:1 ! ทำนายโอกาสความสำเร็จในการผลิตฝนหลวง (มหาวิทยาลัยเกษตรศาสตร์)5 ! ในการนำเครื่องบินขึ้นปฏิบัติการเสียค่าใช้จ่ายค่อนข้างสูง5 ! ใช้เทคนิคการจำแนกประเภทข้อมูล (classification) เพื่อคาดการณ์โอกาสสำเร็จในการขึ้น ปฏิบัติการ5 ! ทำนายอารมณ์จากภาพถ่ายบุคคล (มหาวิทยาลัยหอการค้าไทย)5 ! แนะนำรองเท้าที่เหมาะสมให้แก่เด็กอนุบาล (มหาวิทยาลัยศิลปากร)5 ! จัดกลุ่มผู้ใช้งานเครือข่ายสังคม (social network) ที่มีลักษณะคล้ายๆ กัน (มหาวิทยาลัย เกษตรศาสตร์)5 ! แนะนำคำถามที่เกี่ยวข้องหรือคำถามที่พบบ่อยๆ สำหรับ call center (บริษัท TOT จำกัด)5 http://facebook.com/datacube.th http://www.dataminingtrend.com
  5. 5. Statement of Completion 5 (data)3
  6. 6. Outline 6 (data)3 ! Introduction to Weka9 ! Explorer9 ! CLI (Command Line Interface)9 ! Integrating Weka with PHP9 ! Integrating Weka with Visual C# .Net9 ! Integrating Weka with Java9 ! Example applications9 http://www.facebook.com/datacube.th 8/28/12
  7. 7. Introduction to Weka 7 (data)3 ! Weka1 ! Waikato Environment for Knowledge Analysis5 ! เป็นซอฟต์แวร์ open source สำหรับการวิเคราะห์ข้อมูลด้วยเทคนิค Data Mining5 ! สามารถดาวน์โหลดมาใช้ได้ ฟรี !!!1 ! พัฒนาด้วยภาษา Java และสามารถทำงานได้บน5 ! Windows5 ! Linux5 ! MAC OS5 ! ดาวน์โหลด Weka ได้จาก 5 ! http://www.cs.waikato.ac.nz/ml/weka/5 http://www.facebook.com/datacube.th 8/28/12
  8. 8. Running the Weka 8 (data)3 ! สำหรับ Windows5 ! สำหรับ Linux และ Mac OS X5 !  java -jar weka.jar5 http://www.facebook.com/datacube.th 8/28/12
  9. 9. Starting the Weka http://www.facebook.com/datacube.th 9 (data)3 8/28/12
  10. 10. Weka Explorer 10 (data)3 ! ใช้งาน Weka โดยการคลิกผ่านทางหน้าจอ Interface5 http://www.facebook.com/datacube.th 8/28/12
  11. 11. Weka Experimenter 11 (data)3 ! ใช้เพื่อหาทำการทดลองกับหลายๆ เทคนิค5 5 http://www.facebook.com/datacube.th 8/28/12
  12. 12. Weka Knowledge Flow 12 (data)3 ! นำส่วนการทำงานต่างๆ มาเชื่อมต่อกันเป็น Flow5 5 http://www.facebook.com/datacube.th 8/28/12
  13. 13. Weka Simple CLI 13 (data)3 ! เรียกใช้งาน Weka ผ่านทาง command line5 http://www.facebook.com/datacube.th 8/28/12
  14. 14. 8/28/12 Weka Explorer http://www.facebook.com/datacube.th 14
  15. 15. Weka Explorer 15 (data)3 Tab สำหรับเรียกใช้งานฟังก์ชัน ต่างๆ ของ data mining5 Workspace: เป็นส่วนสำคัญของ Weka Explorer จะใช้ในการปรับ เปลี่ยน พารามิเตอร์ต่างๆ และ แสดงผลการทำงาน5 จะเต้นเมื่อกำลังทำงานอยู่5 Status: บอกว่า Wekaกำลังทำงานอะไรอยู่5 http://www.facebook.com/datacube.th Log: เก็บรายละเอียดของการทำงานต่างๆ5 8/28/12
  16. 16. 16 Weka Explorer (2) 5 ! Preprocess1 !  เลือกไฟล์ Input จากที่ต่างๆ5 !  ดูรายละเอียดของข้อมูล5 !  แก้ไขข้อมูลที่ไม่มีค่า5 !  แปลงข้อมูล5 ! Classify1 !  จำแนกประเภทข้อมูล (classification)5 !  ทำนาย (prediction) ค่าของข้อมูลใหม่โดยอาศัยข้อมูลเก่า5 http://www.facebook.com/datacube.th (data)3 ! Cluster1 !  แบ่งกลุ่มข้อมูลตามความคล้ายคลึง (similarity)5 ! Associate1 !  หารูปแบบข้อมูลที่เกิดร่วมกันบ่อยๆ5 ! Select attributes1 !  คัดเลือกแอตทริบิวต์ที่สำคัญ5 ! Visualize1 !  แสดงผลของข้อมูลในรูปแบบต่างๆ 8/28/12
  17. 17. 17 Data (data)3 หมายเลขสมาชิก2 ชื่อสมาชิก2 เพศ2 อายุ2 รายได้2 19 สมชาย9 ชาย9 209 12,0009 29 สมหญิง9 หญิง9 189 39 สมสมร9 หญิง9 359 35,0009 49 สมจริง9 เด็ก9 59 สมศรี9 หญิง9 3009 20,0009 169 7,0009 4,0009 ! อินสแตนซ์ (Instance)5 !  ข้อมูลที่อยู่ในแนวแถว (row) หรือ เรคอร์ด (record)5 !  เป็นการอธิบายตัวข้อมูลแต่ละตัว โดยจะ ประกอบด้วยหลายๆ แอตทริบิวต์5 !  เช่น รายละเอียดของสมาชิกแต่ละคน1 ! แอตทริบิวต์ (Attribute)5 !  เป็นข้อมูลที่อยู่ในแนวคอลัมน์ (column) หรือ ฟิลด์ (field)5 !  เป็นการอธิบายลักษณะของข้อมูลในแง่มุม ต่างๆ 5 !  เช่น ชื่อสมาชิก, อายุ, เพศ5 http://www.facebook.com/datacube.th 8/28/12
  18. 18. ARFF Format 18 (data)3 ! ARFF File (Attribute-Relation File Format)9 !  ไฟล์รูปแบบที่ Weka กำหนดขึ้นเอง9 !  แบ่งเป็น 2 ส่วนหลัก9 !  ส่วน Header: ส่วนแสดงรายละเอียดต่างๆ เปรียบได้กับโครงสร้างฐานข้อมูล (database schema)9 !  ชื่อของชุดข้อมูล (relation)9 !  ชื่อของแต่ละแอตทริบิวต์ (attribute)9 !  ประเภทของข้อมูลในแต่ละแอตทริบิวต์ (data type)9 !  ส่วน Data: ส่วนของข้อมูล เปรียบเทียบได้กับข้อมูลที่อยู่ในตารางฐานข้อมูล9 !  ข้อมูลในแอตทริบิวต์ต่างๆ ที่ต้องการใช้ในการวิเคราะห์5 http://www.facebook.com/datacube.th 8/28/12
  19. 19. 19 ARFF Format (2) @relation customers @attribute Customer_ID (data)3 ! Tag พิเศษที่มีในส่วน header ของ9 ไฟล์ ARFF9 real !  @relation <relation-name> 2 !  ใช้ในการบอกชื่อเรียกชุดข้อมูล9 … !  @attribute <attribute-name> <data type>2 @data !  Tag พิเศษที่มีในส่วน data ของไฟล์ ARFF9 !  @data2 @attribute Sex {0,1,2} 1,Somchai,1,20,12000 2,Somying,0,18,7000 3,Somsmall,0,35,35000 4,Somjing,2,16,4000 5,Somsri,0,300,20000 http://www.facebook.com/datacube.th !  ใช้บอกชื่อ แอตทริบิวต์ 9 !  ประเภทของข้อมูลในแอตทริบิวต์นั้นๆ9 !  บรรทัดถัดไปจากนี้จะเป็นส่วนของข้อมูล 9 !  ใช้เครื่องหมาย comma (,) แบ่งแต่ละแอตทริบิวต์9 ! % แทน คอมเมนต์ (comment) หรือคำ อธิบาย5 8/28/12
  20. 20. Load data to Weka Explorer ! คลิก (data)3 หน้าต่าง Weka GUI Chooser5 ! กดปุ่ม 20 ในแท็บ Preprocess5 ! เลือกไฟล์ ARFF ที่ต้องการโหลดเข้าไปใน Weka5 ! แท็บ Preprocess จะเปลี่ยนไปโดยจะแสดงค่าต่างๆ ดังนี้5 !  Current Relation: เป็นการบอกรายละเอียดของไฟล์ที่ได้ทำการโหลดเข้ามาใช้งาน5 !  Attributes: ส่วนที่ช่วยจัดการเรื่องแอตทริบิวต์ต่างๆ5 !  Selected Attribute: แสดงรายละเอียดของแอตทริบิวต์ที่ได้ทำการเลือกอยู่5 !  Visualization: เป็นการแสดงกราฟรายละเอียดของแต่ละแอตทริบิวต์5 !  Filter: ใช้สำหรับเลือกเทคนิคในการทำ Preprocessing5 http://www.facebook.com/datacube.th 8/28/12
  21. 21. Classify data 21 (data)3 ! คลิกที่แท็บ Classify 5 ! คลิกที่ปุ่ม ] เลือกเทคนิค classification ที่ต้องการใช้งาน5 !  เลือก Weka > classifiers > tress > J485 ! เลือก Test Options เป็นแบบที่ต้องการทดสอบ5 !  เลือก Cross-validation และ Folds เป็น 105 ! กดปุ่ม เพื่อเริ่มการทำงาน5 ! ผลการทำ classification จะแสดงในส่วน Classifier Output5 !  Classification model5 !  ผลการทดสอบโมเดล5 http://www.facebook.com/datacube.th 8/28/12
  22. 22. Clustering data 22 (data)3 ! คลิกที่แท็บ Cluster5 ! คลิกที่ปุ่ม ] เลือกเทคนิค clustering ที่ต้องการใช้งาน5 ! เลือก Weka > clusters > SimpleKMeans5 ! กดปุ่ม เพื่อเริ่มการทำงาน5 ! ผลการทำ clustering จะแสดงในส่วน Clusterer Output5 ! Center of cluster5 ! จำนวนข้อมูลที่อยู่ในแต่ละคลัสเตอร์5 http://www.facebook.com/datacube.th 8/28/12
  23. 23. Finding association rules 23 (data)3 ! คลิกที่แท็บ Associate5 ! คลิกที่ปุ่ม ] เลือกเทคนิคการหา association rules ที่ต้องการใช้งาน5 ! เลือก Weka > associations> Apriori5 ! กดปุ่ม เพื่อเริ่มการทำงาน5 ! ผลการหา association rules จะแสดงในส่วน Associator Output5 ! กฏความสัมพันธ์ พร้อมค่า Support และ Confidence5 http://www.facebook.com/datacube.th 8/28/12
  24. 24. 8/28/12 Weka Command Line http://www.facebook.com/datacube.th 24
  25. 25. Using Weka CLI 25 (data)3 ! การเรียกใช้งาน Weka ด้วยการพิมพ์คำสั่งผ่านทาง DOS9 ! พิมพ์ cmd ในช่อง Search programs and files จะปรากฏหน้า DOS (หน้าจอดำๆ)9 http://www.facebook.com/datacube.th 8/28/12
  26. 26. 26 Using Weka CLI (2) (data)3 ! พิมพ์ cd “C:Program FilesWeka-3-6” ในหน้า DOS (cmd)9 ! สร้าง decision tree model ด้วย Weka ผ่านทาง command line9 java -cp weka.jar weka.classifiers.trees.J48 -t dataweather.arff9 9 1 2 3 1 ใช้ในการระบุว่าไฟล์ไลบรารี weka.jar อยู่ในโฟลเดอร์ไหน เช่น “C:Program FilesWeka-3-6”9 2 ใช้ในการบอกว่าจะสร้างโมเดลด้วยวิธี decision tree จากตัวอย่างหมายความว่าเทคนิค J489 อยู่ภายใต้ classifier แบบ tree 9 3 option –t เป็นการบอกว่าจะใช้ไฟล์ไหนเป็นไฟล์ input หรือใช้เป็น training data 5 http://www.facebook.com/datacube.th 8/28/12
  27. 27. Using Weka CLI (3) http://www.facebook.com/datacube.th 27 (data)3 8/28/12
  28. 28. 28 Using Weka CLI (4) (data)3 ! Option สำหรับการใช้งาน command line5 !  Generic options เป็นการระบุ option ที่สามารถใช้ได้กับทุกๆ วิธีของ data mining 5 Option2 Function2 -t <training file> สำหรับระบุตำแหน่งของไฟล์ที่จะใช้เป็น training file9 -T <testing file> สำหรับระบุตำแหน่งของไฟล์ที่จะใช้เป็น testing file9 -c <class index> สำหรับระบุว่าจะใช้แอตทริบิวต์ไหนเป็น คลาาคำตอบ9 (ปกติจะเป็นแอตทริบิวต์ตัวสุดท้าย)9 -x <number of folds> สำหรับระบุว่าจะใช้การทดสอบแบบ cross-validation กี่ fold9 -d <output file> สำหรับระบุตำแหน่งของไฟล์ที่ใช้เก็บไฟล์โมเดลที่สร้างได้9 -l <input file> สำหรับระบุตำแหน่งของไฟล์ที่ใช้โหลดไฟล์โมเดลเข้ามาใช้9 -p <attribute range> สำหรับการแสดงคลาสทำนายที่ได้9 http://www.facebook.com/datacube.th 8/28/12
  29. 29. Classification Example 29 (data)3 ! สร้างโมเดล (model training phase)5 java -cp weka.jar weka.classifiers.trees.J48 -t dataweather.arff 9 -d dataweather.model9 !  สร้าง decision tree model เก็บไว้ในไฟล์ชื่อว่า weather.model ภายในโฟลเดอร์ data5 ! ทำนายข้อมูลใหม่ (classification phase)5 X java -cp weka.jar weka.classifiers.trees.J48 -T dataweather.arff 9 -l dataweather.model –p 09 !  -T เป็นการระบุว่าใช้ไฟล์ dataweather.arff เป็น testing data9 !  -l เป็นการระบุว่าใช้ไฟล์ dataweather.model เป็นโมเดลเพื่อใช้ในการทำนาย9 !  -p เป็นกำหนดให้แสดงคลาสที่ทำนายได้ออกมาทางหน้าจอ5 http://www.facebook.com/datacube.th 8/28/12
  30. 30. Clustering Example 30 (data)3 ! พิมพ์ cd “C:Program FilesWeka-3-6” ในหน้า DOS (cmd)9 ! แบ่งกลุ่มข้อมูลด้วย Weka ผ่านทาง command line9 java -cp weka.jar weka.clusterers.SimpleKMeans -N 2 -t dataweather.arff5 http://www.facebook.com/datacube.th 8/28/12
  31. 31. 31 Clustering Example (2) (data)3 ! Output การแบ่งกลุ่มออกเป็น 2 คลัสเตอร์9 5 จุดศูนย์กลางของ แต่ละคลัสเตอร์1 http://www.facebook.com/datacube.th 8/28/12
  32. 32. Association Rules Example 32 (data)3 ! เทคนิคที่นิยมใช้ในการหากฏความสัมพันธ์ (Association rules) คือ Apriori5 ! ไม่สามารถหากฏความสัมพันธ์กับข้อมูลที่เป็นประเภท “ตัวเลข” ได่้5 ! การหากฏความสัมพันธ์โดยใช้ Weka ผ่านทาง command line5 java -cp weka.jar weka.associations.Apriori -C 0.9 –M 0.5 -t dataexample1.arff5 5 !  option “-M” ใช้สำหรับกำหนดค่า minimum support5 !  option “-C” ใข้สำหรับกำหนดค่า minimum confidence5 !  เพิ่ม option “-I” เพื่อแสดง frequent itemsets5 http://www.facebook.com/datacube.th 8/28/12
  33. 33. Association Rules Example (2) 33 (data)3 ! Output5 กฏความสัมพันธ์ ที่พบ1 http://www.facebook.com/datacube.th 8/28/12
  34. 34. Handle large dataset 34 (data)3 ! Weka พัฒนาขึ้นด้วยภาษาจาวา (Java) 5 ! จะทำงานบน Virtual Machine (VM) ที่ จาวา สำรองหน่วยความจำไว้ให้5 ! อาจจะมีปัญหาเมื่อทำงานกับข้อมูลที่มีขนาดใหญ่ ซึ่งอาจจะพบ error ว่า5 “Not enough memory. Please load a smaller dataset or use a larger heap size.”5 ! วิธีแก้ปัญหา ทำได้โดยการเพิ่มขนาดของ heap size ของ VM5 java –Xmx1024m –jar weka.jar5 !  Option “-Xmx” เป็นการระบุขนาดของ heap size 5 !  1024m คือ การระบุว่าจะใช้ heap size เป็นจำนวน 1GB (1024 MB)5 !  การกำหนด heap size ที่เหมาะสมจะต้องขึ้นกับขนาดของ RAM ภายในเครื่อง5 http://www.facebook.com/datacube.th 8/28/12
  35. 35. Convert CSV to ARFF 35 (data)3 ! ในกรณีที่มีไฟล์ประเภท CSV (Comma Separated Values) อยู่สามารถแปลงให้ เป็นไฟล์ประเภท ARFF ได้โดย5 java -cp weka.jar weka.core.converters.CSVLoader dataweather.csv > 5 dataweather.arff5 http://www.facebook.com/datacube.th 8/28/12
  36. 36. 8/28/12 Integrate Weka & PHP http://www.facebook.com/datacube.th 36
  37. 37. 37 Integrate Weka & PHP (data)3 ! Overview Framework5 Web browser Web application (PHP) Data mining (Weka) Web Server (Apache, IIS) 5 ! องค์ประกอบ5 !  Web server เช่น Apache หรือ IIS5 !  PHP Interpreter สำหรับรันโปรแกรมที่เขียนด้วยภาษา PHP5 !  ไลบรารีของ Weka สำหรับใช้ในการวิเคราะห์ข้อมูลด้วยเทคนิค data mining5 http://www.facebook.com/datacube.th 8/28/12
  38. 38. Integrate Weka & PHP (2) 38 (data)3 ! สร้างโฟลเดอร์ weka ไว้ภายใต้โฟลเดอร์ C:AppServwww หรือ C:inetpub wwwroot หรือ /var/www9 ! วางไฟล์ไลบรารี weka.jar ไว้ที่โฟลเดอร์ Weka ที่สร้างขึ้นใหม่9 ! ภายใต้โฟลเดอร์ weka สร้างโฟลเดอร์ data และ model สำหรับเก็บไฟล์ตัวอย่าง และไฟล์ classification model ต่าๆ ที่สร้างขึ้น9 ! ดาวน์โหลดไฟล์ข้อมูลต่างๆ จากเว็บไซต์ http://www.open-miner.com/ เพื่อใส่ใน โฟลเดอร์ weka/data9 http://www.facebook.com/datacube.th 8/28/12
  39. 39. Integrate Weka & PHP (3) 39 (data)3 ! ใช้คำสั่งเหมือนที่ใช้เรียก Weka ผ่านทาง Command Line (line 2-3)5 ! ใช้คำสั่ง exec() เพื่อทำการรันคำสั่งในตัวแปร $cmd (line 2-3)5 ! เก็บผลลัพธ์ไว้ในตัวแปร $output (line 5)5 ! ทำการวน loop เพื่อแสดงผลลัพธ์ผ่านทางหน้า web browser (line 7-10)5 1: <?php 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: ?> $cmd = “java –cp weka.jar weka.clusterers.SimpleKMeans -N 2 –t dataweather.arff”; exec($cmd, $output); for ($i = 0; $i < sizeof($output); $i++) { trim($output[$i]); echo $output[$i].”<br>”; } http://www.facebook.com/datacube.th 8/28/12
  40. 40. Integrate Weka & PHP (4) 40 (data)3 ! Example5 Input form http://www.facebook.com/datacube.th Clustering output 8/28/12
  41. 41. Classify data 41 (data)3 ! สร้างโมเดล (model training phase)1 ! ใช้ไฟล์ dataweather.arff เป็นไฟล์ training data (option “-t”) 5 ! ใช้เทคนิค J48 (decision tree) เพื่อสร้าง classification model (weka.classifiers.trees.J48)5 ! สร้างโมเดลชื่อ weather.model เก็บไว้ในโฟลเดอร์ model (option “-d”)5 1: <?php 2: 3: 4: 5: 5: 6: 7: 8: 9: 10: 11: ?> $cmd = “java -cp weka.jar weka.classifiers.trees.J48 -t dataweather.arff –d modelweather.model”; exec($cmd, $output); for ($i = 0; $i < sizeof($output); $i++) { trim($output[$i]); echo $output[$i].”<br>”; } http://www.facebook.com/datacube.th 8/28/12
  42. 42. 42 Classify data (2) (data)3 ! output5 โมเดล decision tree1 http://www.facebook.com/datacube.th 8/28/12
  43. 43. Classify data (3) 43 (data)3 ! ทำนายข้อมูลใหม่ (Classification)1 ! ใช้ไฟล์ dataweather_test.arff เป็นไฟล์ testing data (option “-T”) 5 ! ใช้โมเดลชื่อ weather.model ที่สร้างขึ้นเพื่อทำนายข้อมูล testing data (option “-l”)1 1: <?php 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: ?> $cmd = “java -cp weka.jar weka.classifiers.trees.J48 -T dataweather_test.arff -l dataweather.model –p 0”; exec($cmd, $output); for ($i = 0; $i < sizeof($output); $i++) { trim($output[$i]); echo $output[$i].”<br>”; } http://www.facebook.com/datacube.th 8/28/12
  44. 44. Classify data (4) 44 (data)3 ! Output5 ! inst# : หมายเลข instance5 ! actual : คลาสคำตอบในไฟล์ training data5 ! predicted : คลาสที่โมเดลทำนายได้5 ! prediction : ค่าความน่าจะเป็นของ คลาสคำตอบที่โมเดลทำนายได้5 http://www.facebook.com/datacube.th ผลการทำนาย1 8/28/12
  45. 45. Cluster data 45 (data)3 ! คลัสเตอริ่งที่แสดงเฉพาะข้อมูล centroid ของแต่ละคัลสเตอร์5 ! ใช้ไฟล์ dataweather.arff เป็นไฟล์ training data (option “-t”) 5 ! ใช้เทคนิค SimpleKMeans เพื่อทำการแบ่งกลุ่มข้อมูล (weka.clusterers.SimpleKMeans)5 ! สามารถกำหนดจำนวนคลัสเตอร์ได้จาก option “-N”5 1: <?php 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: ?> $cmd = “java –cp weka.jar weka.clusterers.SimpleKMeans -N 2 –t dataweather.arff”; exec($cmd, $output); for ($i = 0; $i < sizeof($output); $i++) { trim($output[$i]); echo $output[$i].”<br>”; } http://www.facebook.com/datacube.th 8/28/12
  46. 46. 46 Cluster data (2) (data)3 ! Output5 จุดศูนย์กลางของ แต่ละคลัสเตอร์1 http://www.facebook.com/datacube.th 8/28/12
  47. 47. Cluster data (3) 47 (data)3 ! คลัสเตอริ่งเพื่อระบุหมายเลขคลัสเตอร์ให้กับข้อมูล5 ! ใช้ไฟล์ dataweather.arff เป็นไฟล์ input data (option “-i”) สำหรับเทคนิค AddCluster5 ! ใช้เทคนิค weka.filters.unsupervised.attribute.AddCluster เพื่อเพิ่มหมายเลขคลัสเตอร์ให้กับ ข้อมูลแต่ละ instance5 ! ใช้เทคนิค SimpleKMeans เพื่อทำการแบ่งกลุ่มข้อมูล (weka.clusterers.SimpleKMeans)5 ! สามารถกำหนดจำนวนคลัสเตอร์ได้จาก option “-N”5 1: <?php ! ผลลัพธ์อยู่ในไฟล์ cluster_result.arff (option “-o”)5 2: 3: 4: 5: 6: 7: 5: ?> $cmd = “java -cp weka.jar weka.filters.unsupervised.attribute.AddCluster -W "weka.clusterers.SimpleKMeans -N 2" -i dataweather.arff –o datacluster_results.arff”; exec($cmd, $output); http://www.facebook.com/datacube.th 8/28/12
  48. 48. Clustering data (4) 48 (data)3 ! Output5 ! มีแอตทริบิวต์ cluster 5 เพิ่มขึ้นมา5 ! สามารถแบ่งแยกข้อมูล5 ออกตามแต่ละคลัสเตอร์5 http://www.facebook.com/datacube.th ข้อมูลพร้อม หมายเลขคลัสเตอร์1 8/28/12
  49. 49. Finding Association Rules 49 (data)3 ! หากฏความสัมพันธ์ด้วยเทคนิค Apriori5 ! ใช้ไฟล์ dataexample1.arff เป็นไฟล์ training data (option “-t”) 5 ! ใช้เทคนิค Apriori เพื่อทำการแบ่งกลุ่มข้อมูล (weka.associations.Apriori)5 ! สามารถกำหนดค่า min_sup และ min_conf ด้วย option “-M” และ “-C”5 1: <?php 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: ?> $cmd = “java -cp weka.jar weka.associations.Apriori -C 0.9 –M 0.5 -t dataexample1.arff”; exec($cmd, $output); for ($i = 0; $i < sizeof($output); $i++) { trim($output[$i]); echo $output[$i].”<br>”; } http://www.facebook.com/datacube.th 8/28/12
  50. 50. Finding Association Rules [2] 50 (data)3 ! Output5 กฏความสัมพันธ์ที่พบ1 http://www.facebook.com/datacube.th 8/28/12
  51. 51. Asynchronous mode 51 (data)3 !  การใช้ฟังก์ชัน exec() ของ PHP จะเป็นการทำงานแบบ synchronous 5 !  ต้องรอ Weka ทำงานให้เสร็จก่อนจึงจะแสดงผลออกมาที่ web browser5 !  อาจจะมีปัญหาถ้าใช้โปรแกรม Weka ทำการวิเคราะห์ข้อมูลที่มีขนาดใหญ่ๆ เนื่องจากต้องรอผลการรันและอาจจะทำให้ session expire หรือ timeout ไปก่อน5 !  วิธีการหนึ่งที่สามารถแก้ไขได้คือการเรียก Weka แบบ asynchronous mode 5 !  สั่งให้ Weka ทำงานแบบ background 5 !  ไม่ต้องรอให้ Weka ทำงานเสร็จ 5 !  เมื่อ weka ทำงานเสร็จแล้วให้บันทึกผลลงในไฟล์ หรือ ฐานข้อมูล5 !  Windows 5 !  ใช้คำสั่ง “start cmd /c” เพื่อสั่งให้ทำงานใน window ใหม่5 !  Linux/Mac OS X5 !  เพิ่ม option ‘&’ ต่อท้ายเพื่อให้ทำงานแบบ background5 http://www.facebook.com/datacube.th 5 8/28/12
  52. 52. Asynchronous mode (2) 52 (data)3 ! Windows5 9 9 1: <?php 2: $cmd = “start cmd /c java -cp weka.jar 3: weka.classifiers.trees.J48 -t dataweather.arff 4: -d modelweather.model ^> classification_output.txt”; 5: 6: exec($cmd, $output); 5: 11: ?> 9 ! ใช้คำสั่ง “start cmd /c” เพื่อสั่งให้ทำงานในหน้าต่างอื่นแทน9 ! สร้างไฟล์โมเดลเก็บไว้ในโฟลเดอร์ weather.model9 ! เก็บผลลัพธ์การทำงานไว่ในไฟล์ classification_output.txt5 http://www.facebook.com/datacube.th 8/28/12
  53. 53. Asynchronous mode (3) 53 (data)3 ! Linux/Mac OS X5 1: <?php 2: $cmd = “java -cp weka.jar weka.classifiers.trees.J48 3: -t dataweather.arff -d modelweather.model 4: > classification_output.txt &”; 5: 6: exec($cmd, $output); 5: 11: ?> 9 ! ใช้คำสั่ง “&” ต่อท้ายคำสั่งทำให้ทำงานในแบบ background9 ! สร้างไฟล์โมเดลเก็บไว้ในโฟลเดอร์ weather.model9 ! เก็บผลลัพธ์การทำงานไว่ในไฟล์ classification_output.txt5 5 http://www.facebook.com/datacube.th 8/28/12
  54. 54. 8/28/12 Integrate Weka & C# http://www.facebook.com/datacube.th 54
  55. 55. 55 Integrate Weka & C# (data)3 ! Overview Framework5 Standalone application (C# .Net) Data mining (Weka) .NET Framework 5 ! องค์ประกอบ5 ! Microsoft .Net Framework สำหรับใช้รันภาษา C#5 ! ไลบรารีของ Weka สำหรับใช้ในการวิเคราะห์ข้อมูลด้วยเทคนิค data mining5 http://facebook.com/datacube.th http://www.dataminingtrend.com
  56. 56. 56 Integrate Weka & C# (2) (data)3 ! ใช้ method run_cmd เพื่อรับคำสั่งในการทำงานผ่านทาง command line5 1: private string run_cmd(String cmd) 2: { 3: StreamWriter sw; // Handles strings sent to CMD.exe 4: StreamReader sr; // Reads text back from CMD.exe 5: StreamReader err; // Returns all errors from CMD.exe 6: Process dir = new Process(); // Will run CMD.EXE for you 7: String output; 8: 9: 10: 11: 12: 13: dir.StartInfo.FileName = "CMD.EXE"; dir.StartInfo.UseShellExecute = false; dir.StartInfo.CreateNoWindow = true; dir.StartInfo.RedirectStandardInput = true; dir.StartInfo.RedirectStandardError = true; dir.StartInfo.RedirectStandardOutput = true; // Continue to next slide http://facebook.com/datacube.th http://www.dataminingtrend.com
  57. 57. 57 Integrate Weka & C# (3) (data)3 ! ใช้ method run_cmd เพื่อรับคำสั่งในการทำงานผ่านทาง command line5 // Continue from previous slide 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: dir.Start(); // Runs CMD.exe sw = dir.StandardInput; sr = dir.StandardOutput; err = dir.StandardError; sw.AutoFlush = true; sw.WriteLine(cmd); // Sends strings to CMD.EXE output = sr.ReadToEnd().ToString(); sw.Close(); sr.Close(); err.Close(); return output; } http://facebook.com/datacube.th http://www.dataminingtrend.com
  58. 58. 58 Integrate Weka & C# (4) (data)3 ! ตัวอย่างการเรียกใช้ methon run_cmd เพื่อทำการ clustering5 ! ต้องระบุ path ของโปรแกรม weka (line 4)5 1: public Form1() 2: { 3: InitializeComponent(); 4: String weka_path = "C:Program FilesWeka-3-6"; 5: String cmd = "java -cp "" + weka_path + "weka.jar" 6: weka.clusterers.SimpleKMeans -N 2 -t "" + 7: weka_path + "dataweather.arff""; 8: String output = run_weka(cmd); 9: MessageBox.Show(output); 10: } http://facebook.com/datacube.th http://www.dataminingtrend.com
  59. 59. 59 Integrate Weka & C# (5) (data)3 ! Output5 ผลการทำคลัสเตอริ่ง1 http://facebook.com/datacube.th http://www.dataminingtrend.com
  60. 60. Classify data 60 (data)3 ! สร้างโมเดล (model training phase)1 ! ใช้ไฟล์ dataweather.arff เป็นไฟล์ training data (option “-t”) 5 ! ใช้เทคนิค J48 (decision tree) เพื่อสร้าง classification model (weka.classifiers.trees.J48)5 ! สร้างโมเดลชื่อ weather.model เก็บไว้ในโฟลเดอร์ model (option “-d”)5 1: public create_model() 2: { 3: 4: String weka_path = "C:Program FilesWeka-3-6"; 5: String cmd = "java -cp "" + weka_path + "weka.jar" 6: weka.classifiers.trees.J48 -t "" + 7: weka_path + "dataweather.arff” + 8: " -d "" + weka_path + "modelweather.model""; 9: String output = run_weka(cmd); 10: MessageBox.Show(output); 11: } http://facebook.com/datacube.th http://www.dataminingtrend.com
  61. 61. 61 Classify data (2) (data)3 ! output5 โมเดล decision tree1 http://facebook.com/datacube.th http://www.dataminingtrend.com
  62. 62. 62 Classify data (3) (data)3 ! ทำนายข้อมูลใหม่ (Classification)1 ! ใช้ไฟล์ dataweather_test.arff เป็นไฟล์ testing data (option “-T”) 5 ! ใช้โมเดลชื่อ weather.model ที่สร้างขึ้นเพื่อทำนายข้อมูล testing data (option “-l”)1 1: public test_model() 2: { 3: 4: String weka_path = "C:Program FilesWeka-3-6"; 5: String cmd = "java -cp "" + weka_path + "weka.jar" 6: weka.classifiers.trees.J48 -T "" + 7: weka_path + "dataweather_test.arff” + 8: " -l "" + weka_path + "modelweather.model” –p 0"; 9: String output = run_weka(cmd); 10: MessageBox.Show(output); 11: } http://facebook.com/datacube.th http://www.dataminingtrend.com
  63. 63. Classify data (4) 63 (data)3 ! Output5 ! inst# : หมายเลข instance5 ! actual : คลาสคำตอบในไฟล์ training data5 ! predicted : คลาสที่โมเดลทำนายได้5 ! prediction : ค่าความน่าจะเป็นของคลาส5 คำตอบที่โมเดลทำนายได้5 http://facebook.com/datacube.th ผลการทำนาย1 http://www.dataminingtrend.com
  64. 64. 64 Cluster data (data)3 ! คลัสเตอริ่งที่แสดงเฉพาะข้อมูล centroid ของแต่ละคัลสเตอร์5 ! ใช้ไฟล์ dataweather.arff เป็นไฟล์ training data (option “-t”) 5 ! ใช้เทคนิค SimpleKMeans เพื่อทำการแบ่งกลุ่มข้อมูล (weka.clusterers.SimpleKMeans)5 ! สามารถกำหนดจำนวนคลัสเตอร์ได้จาก option “-N”5 1: public run_clustering() 2: { 3: 4: String weka_path = "C:Program FilesWeka-3-6"; 5: String cmd = "java -cp "" + weka_path + "weka.jar" 6: weka.clusterers.SimpleKMeans -N 2 -t "" + 7: weka_path + "dataweather.arff""; 8: String output = run_weka(cmd); 9: MessageBox.Show(output); 10: } http://facebook.com/datacube.th http://www.dataminingtrend.com
  65. 65. 65 Cluster data (2) (data)3 ! Output5 จุดศูนย์กลางของ แต่ละคลัสเตอร์1 http://facebook.com/datacube.th http://www.dataminingtrend.com
  66. 66. 66 Cluster data (3) (data)3 ! คลัสเตอริ่งเพื่อระบุหมายเลขคลัสเตอร์ให้กับข้อมูล5 ! ใช้ไฟล์ dataweather.arff เป็นไฟล์ input data (option “-i”) สำหรับเทคนิค AddCluster5 ! ใช้เทคนิค weka.filters.unsupervised.attribute.AddCluster เพื่อเพิ่มหมายเลขคลัสเตอร์ให้กับ ข้อมูลแต่ละ instance5 ! ใช้เทคนิค SimpleKMeans เพื่อทำการแบ่งกลุ่มข้อมูล (weka.clusterers.SimpleKMeans)5 1: ! ผลลัพธ์อrun_clustering_detail() public ยู่ในไฟล์ cluster_result.arff (option “-o”)5 2: { 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: } String weka_path = "C:Program FilesWeka-3-6"; String cmd = "java -cp "" + weka_path + "weka.jar" weka.filters.unsupervised.attribute.AddCluster -W "weka.clusterers.SimpleKMeans -N 2" -i "" + weka_path + "dataweather.arff" –o "" + weka_path + "datacluster_output.arff""; String output = run_weka(cmd); MessageBox.Show(output); http://facebook.com/datacube.th http://www.dataminingtrend.com
  67. 67. Clustering data (4) 67 (data)3 ! Output5 ! มีแอตทริบิวต์ cluster 5 เพิ่มขึ้นมา5 ! สามารถแบ่งแยกข้อมูล5 ออกตามแต่ละคลัสเตอร์5 http://facebook.com/datacube.th ข้อมูลพร้อม หมายเลขคลัสเตอร์1 http://www.dataminingtrend.com
  68. 68. 68 Finding Association Rules (data)3 ! หากฏความสัมพันธ์ด้วยเทคนิค Apriori5 ! ใช้ไฟล์ dataexample1.arff เป็นไฟล์ training data (option “-t”) 5 ! ใช้เทคนิค Apriori เพื่อทำการแบ่งกลุ่มข้อมูล (weka.associations.Apriori)5 ! สามารถกำหนดค่า min_sup และ min_conf ด้วย option “-M” และ “-C”5 1: public run_association_rules() 2: { 3: 4: String weka_path = "C:Program FilesWeka-3-6"; 5: String cmd = "java -cp "" + weka_path + "weka.jar" 6: weka.associations.Apriori -C 0.9 -M 0.5 7: -t ”” + weka_path + "dataexample1.arff""; 8: String output = run_weka(cmd); 9: MessageBox.Show(output); 10: } http://facebook.com/datacube.th http://www.dataminingtrend.com
  69. 69. Finding Association Rules (2) 69 (data)3 ! Output5 กฏความสัมพันธ์ที่พบ1 http://facebook.com/datacube.th http://www.dataminingtrend.com
  70. 70. 8/28/12 Integrate Weka & Java http://www.facebook.com/datacube.th 70
  71. 71. 71 Integrate Weka & Java (data)3 ! Overview Framework5 Standalone application (Java) Data mining (Weka) Java Virtual Machine (JVM) 5 ! องค์ประกอบ5 ! Java Virtual Machine (JVM) ใช้สำหรับรันโปรแกรมภาษาจาวา5 ! ไลบรารีของ Weka สำหรับใช้ในการวิเคราะห์ข้อมูลด้วยเทคนิค data mining5 http://facebook.com/datacube.th http://www.dataminingtrend.com
  72. 72. 72 Integrate Weka & Java (2) (data)3 ! import แพ็คเก็จ (package) ของ Weka เข้ามาใช้งาน เช่น5 ! !import weka.classifiers.trees.j48 สำหรับใช้งาน decision tree (J48)5 ! import weka.classifiers.bayes.NaiveBayes สำหรับใช้งาน NaïveBayes5 ! package ดูได้จาก5 5 ! คลิกขวาที่5 http://facebook.com/datacube.th http://www.dataminingtrend.com
  73. 73. Integrate Weka & Java (3) 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 73 (data)3 import weka.classifiers.trees.*; import weka.classifiers.trees.j48.*; option ที่ใช้ใน import java.util.*; import weka.core.*; CLI1 Include package เพื่อใช้ import weka.classifiers.*; ในการทำ classification1 class testClassifier { public static void main(String[] argv) { String argument = "-t dataweather.arff –d modelweather.model"; argv = argument.split(" "); try { System.out.println(Evaluation.evaluateModel(new J48(), argv)); } catch (Exception e) { System.err.println(e.getMessage()); } } } http://facebook.com/datacube.th http://www.dataminingtrend.com
  74. 74. 74 Integrate Weka & Java (4) (data)3 ! ขั้นตอนการ compile โปรแกรม5 5 javac -classpath “C:Program FilesWeka-3-6weka.jar” testClassifier.java ! ขั้นตอนการ run โปรแกรม5 java -classpath testClassifier http://facebook.com/datacube.th “C:Program FilesWeka-3-6weka.jar;.” http://www.dataminingtrend.com
  75. 75. Integrate Weka & Java (5) 75 (data)3 ! Output5 http://facebook.com/datacube.th http://www.dataminingtrend.com
  76. 76. Classify data 76 (data)3 ! สร้างโมเดล (model training phase)1 ! ใช้ไฟล์ dataweather.arff เป็นไฟล์ training data (option “-t”) 5 ! ใช้เทคนิค J48 (decision tree) เพื่อสร้าง classification model (weka.classifiers.trees.J48)5 ! สร้างโมเดลชื่อ weather.model เก็บไว้ในโฟลเดอร์ model (option “-d”)5 1: public static void main(String[] argv) 2: { 3: testClassifier tc = new testClassifier(); 4: tc.buildClassifier("dataweather.arff",”dataweather.model”); 5: 6: } http://facebook.com/datacube.th http://www.dataminingtrend.com
  77. 77. 77 Classify data (2) (data)3 7: public void buildClassifier(String training_file, String model_file) 8: { 9: String[] argv = null; 10: String argument = "-t " + training_file + " -d "+ model_file; 11: String result = ""; 12: String[] stat = null; 13: argv = argument.split(" "); 14: try { 15: result = Evaluation.evaluateModel(new J48(), argv); 16: 17: stat = result.split("n"); 18: for (int i = 0; i < stat.length; i++) { 19: System.out.println("" + i + " " + stat[i]); 20: } 21: } catch (Exception e) { 22: System.err.println(e.getMessage()); 23: } 24: } http://facebook.com/datacube.th http://www.dataminingtrend.com
  78. 78. Classify data (3) 78 (data)3 ! output5 โมเดล decision tree1 http://facebook.com/datacube.th http://www.dataminingtrend.com
  79. 79. 79 Classify data (4) (data)3 ! ทำนายข้อมูลใหม่ (Classification)1 ! ใช้ไฟล์ dataweather_test.arff เป็นไฟล์ testing data (option “-T”) 5 ! ใช้โมเดลชื่อ weather.model ที่สร้างขึ้นเพื่อทำนายข้อมูล testing data (option “-l”)1 1: public static void main(String[] argv) 2: { 3: testClassifier tc = new testClassifier(); 4: tc.predict(”modelweather.model","dataweather_test.arff"); 5: 6: } http://facebook.com/datacube.th http://www.dataminingtrend.com
  80. 80. Classify data (5) 80 (data)3 7: public void predict(String model_file, String testing_file) { 8: String[] argv = null; 9: String argument = " -l "+ model_file + " -T "+ testing_file + " -p 0"; 10: String result; 11: argv = argument.split(" "); 12: try { 13: result = Evaluation.evaluateModel(new J48(), argv); 14: System.out.println(result); 15: } catch (Exception e) { 16: System.err.println(e.getMessage()); 17: } 18: } http://facebook.com/datacube.th http://www.dataminingtrend.com
  81. 81. Classify data (6) ! Output5 81 (data)3 ผลการทำนาย1 ! inst# : หมายเลข instance5 ! actual : คลาสคำตอบในไฟล์ 5 training data5 ! predicted : คลาสที่โมเดลทำนายได้5 ! prediction : ค่าความน่าจะเป็นของ5 คลาสคำตอบที่โมเดลทำนายได้5 http://facebook.com/datacube.th http://www.dataminingtrend.com
  82. 82. Cluster data 82 (data)3 ! คลัสเตอริ่งที่แสดงเฉพาะข้อมูล centroid ของแต่ละคัลสเตอร์5 ! ใช้ไฟล์ dataweather.arff เป็นไฟล์ training data (option “-t”) 5 ! ใช้เทคนิค SimpleKMeans เพื่อทำการแบ่งกลุ่มข้อมูล (weka.clusterers.SimpleKMeans)5 ! สามารถกำหนดจำนวนคลัสเตอร์ได้จาก option “-N”5 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: import java.io.*; import java.util.*; import weka.core.*; import weka.clusterers.*; import weka.clusterers.SimpleKMeans; import weka.clusterers.ClusterEvaluation; import weka.clusterers.Clusterer; class testClusterer public static void main(String[] argv) { testClusterer tc = new testClusterer(); tc.cluster("dataweather.arff",2); } http://facebook.com/datacube.th http://www.dataminingtrend.com
  83. 83. Cluster data (2) 83 (data)3 14: public void cluster(String training_file, int k) { 15: String[] options = null; 16: String argument = "-N "+ k +" -t " + training_file; 17: String result = ""; 18: String[] stat = null; 19: options = argument.split(" "); 20: String trainFileString; 21: StringBuffer text = new StringBuffer(); 22: Reader reader; 23: try { 24: SimpleKMeans clusterer = new SimpleKMeans(); 25: clusterer.setOptions(options); 26: trainFileString = Utils.getOption('t', options); 27: reader = new BufferedReader(new FileReader(trainFileString)); 28: clusterer.buildClusterer(new Instances(reader)); 29: System.out.println(clusterer); 30: } catch (Exception e) { 31: System.err.println(e.getMessage()); 32: } 33: } http://facebook.com/datacube.th http://www.dataminingtrend.com
  84. 84. 84 Cluster data (3) (data)3 ! Output5 จุดศูนย์กลางของ แต่ละคลัสเตอร์1 http://facebook.com/datacube.th http://www.dataminingtrend.com
  85. 85. Cluster data (4) 85 (data)3 ! คลัสเตอริ่งเพื่อระบุหมายเลขคลัสเตอร์ให้กับข้อมูล5 ! ใช้ไฟล์ dataweather.arff เป็นไฟล์ training data (option “-t”) 5 ! ใช้เทคนิค SimpleKMeans เพื่อทำการแบ่งกลุ่มข้อมูล (weka.clusterers.SimpleKMeans)5 ! สามารถกำหนดจำนวนคลัสเตอร์ได้จาก option “-N”5 ! ต้องใช้ option “-O” เพื่อ preserve order of instances5 5 1: int[] assignments = clusterer.getAssignments(); 2: int i=0; 3: for(int clusterNum : assignments) { 4: System.out.printf("Instance %d -> Cluster %dn", i, clusterNum); 5: i++; 6: } http://facebook.com/datacube.th http://www.dataminingtrend.com
  86. 86. Clustering data (5) 86 (data)3 14: public void cluster(String training_file, int k) { 15: String[] options = null; 16: String argument = "-N "+ k +” -O -t " + training_file; 17: String result = ""; 18: String[] stat = null; 19: options = argument.split(" "); 20: String trainFileString; 21: StringBuffer text = new StringBuffer(); 22: Reader reader; 23: try { 24: SimpleKMeans clusterer = new SimpleKMeans(); 25: clusterer.setOptions(options); 26: trainFileString = Utils.getOption('t', options); 27: reader = new BufferedReader(new FileReader(trainFileString)); 28: clusterer.buildClusterer(new Instances(reader)); 29: System.out.println(clusterer); 30: int[] assignments = clusterer.getAssignments(); 31: int i=0; 32: for(int clusterNum : assignments) { 33: System.out.printf("Instance %d -> Cluster %dn", i, clusterNum); 34: i++; 35: } 36: } catch (Exception e) { 37: System.err.println(e.getMessage()); 38: } http://www.dataminingtrend.com http://facebook.com/datacube.th http://www.open-miner.com 8/28/12 39: }
  87. 87. 87 Clustering data (6) (data)3 ! Output5 ! มีแอตทริบิวต์ cluster 5 เพิ่มขึ้นมา5 ! สามารถแบ่งแยกข้อมูล5 ออกตามแต่ละคลัสเตอร์5 ข้อมูลพร้อม หมายเลขคลัสเตอร์1 http://facebook.com/datacube.th http://www.dataminingtrend.com
  88. 88. 88 Finding Association Rules (data)3 ! หากฏความสัมพันธ์ด้วยเทคนิค Apriori5 ! ใช้ไฟล์ dataexample1.arff เป็นไฟล์ training data (option “-t”) 5 ! ใช้เทคนิค Apriori เพื่อทำการแบ่งกลุ่มข้อมูล (weka.associations.Apriori)5 ! สามารถกำหนดค่า min_sup และ min_conf ด้วย option “-M” และ “-C”5 1: 2: 3: 4: 5: 6: 7: import java.io.*;import java.util.*; import weka.core.*; import weka.associations.*; public static void main(String[] options) { testAssociation ta = new testAssociation(); ta.findAssociationRules("dataexample1.arff"); } http://facebook.com/datacube.th http://www.dataminingtrend.com
  89. 89. Finding Association Rules (2) 89 (data)3 8: public void findAssociationRules(String training_file) 9: { 10: String[] options = null; 11: String argument = "-t " + training_file; 12: options = argument.split(" "); 13: String trainFileString; 14: StringBuffer text = new StringBuffer(); 15: Apriori apriori = new Apriori(); 16: Reader reader; 17: try { 18: trainFileString = Utils.getOption('t', options); 19: if (trainFileString.length() == 0) throw new Exception( 20: "No training file given!"); 21: apriori.setOptions(options); 22: reader = new BufferedReader(new 23: FileReader(trainFileString)); 24: apriori.buildAssociations(new Instances(reader)); 25: System.out.println(apriori); 26: } catch(Exception e) { 27: e.printStackTrace(); 28: System.out.println("n"+e.getMessage()); 29: } 30: } http://facebook.com/datacube.th http://www.dataminingtrend.com
  90. 90. Finding Association Rules (3) 90 (data)3 ! Output5 กฏความสัมพันธ์ที่พบ1 http://facebook.com/datacube.th http://www.dataminingtrend.com
  91. 91. 91 For more information (data)3 ! หลักสูตรการพัฒนา Web Application ด้วย PHP และ Weka รุ่นที่ 2 5 จะจัดขึ้นในช่วงเดือนเมษายน 2557 5 ! หสม. Data Cube5 ! http://facebook.com/datacube.th5 ! http://www.dataminingtrend.com5 ! sit.ake@gmail.com5 http://facebook.com/datacube.th http://www.dataminingtrend.com

×