PyCaret ทดลองติดตั้งและใช้งาน (2/3)

Thanakorn Thaminkaew
6 min readMay 15, 2022

--

หลังจากตอนที่แล้ว ผมได้แนะนำ PyCaret ไปเบื้องต้นแล้ว (สามารถกลับอ่านได้ ที่นี่) ในบทความนี้ผมจะแสดงตัวอย่างการติดตั้งและทดลองใช้งานไลบรารีเพื่อวิเคราะห์ข้อมูลในโจทย์การจำแนกประเภท (classification) และการประมวลผลทางภาษา (natural language processing)

ตัวอย่างการติดตั้ง PyCaret

ท่านสามารถติดตั้ง PyCaret เหมือนไลบรารี่ทั่วไปผ่านคำสั่ง pip install pycaret หรือติดตั้งด้วย pip install pycaret[full] สำหรับการติดตั้งแบบเต็มรูปแบบ ทั้งนี้ทางผู้พัฒนาไลบรารีได้ทำการทดสอบการทำงานกับ Python 3.6–3.9 และติดตั้งไปบน Ubuntu 16.04 หรือ Window 7 ขึ้นไป (Python 3.9 เฉพาะ Ubuntu)

อย่างไรก็ตาม เนื่องจาก PyCaret ถูกพัฒนาด้วยการเปลี่ยนแปลงพฤติกรรมการทำงานของฟังก์ชั่นหรือคลาส (wrapper) ที่กล่าวไปในตอนที่แล้ว ผมขอแนะนำให้ท่านติดตั้งและใช้งานภายใต้สภาพแวดล้อมเฉพาะ (virtual environment) เพื่อการใช้งานได้อย่างราบรื่น ไม่ติดปัญหาความไม่เข้ากันระหว่าง PyCaret กับเวอร์ชั่นของไลบรารี่ที่เกี่ยวข้อง เช่น sklearn <0.23.2, plotly>=4.4.1, spacy<2.4.0, gensim<4.0.0 เป็นต้น โดยท่านสามารถเข้าไปดูไลบรารี่ที่เกี่ยวข้องทั้งหมดได้ ที่นี่

การทดลองใช้งาน PyCaret

ตามที่กล่าวไปข้างต้น ในบทความนี้ ผมใช้ PyCaret ในการแก้ไขโจทย์การจำแนกแบบไบนารี (binary classification) ซึ่งเป็นโจทย์ประเภท supervised learning และโจทย์การจัดกลุ่มข้อความ (topic model) ซึ่งเป็นหนึ่งในการประยุกต์ใช้งานของการประมวลผลทางภาษา (natural language processing) ซึ่งเป็นโจทย์ประเภท unsupervised learning โดยที่โค้ดการเขียนทั้งหมด จะอยู่ใน google colab ซึ่งท่านสามารถทดลองเล่น PyCaret ระหว่างการอ่านบทความได้ ที่นี่

*ทั้งนี้ผลลัพธ์ที่ได้จากโมเดลอาจะมีความคลาดเคลื่อนไปบ้าง เนื่องจากหลายโมเดลมีการสุ่มค่าตั้งต้น ซึ่งหากท่านต้องการให้ผลลัพธ์ออกมาเหมือนกับตัวอย่าง ท่านจะต้องตั้ง session_id ในขั้นตอนของ setup() ให้ตรงกับตัวอย่าง

PyCaret กับการจำแนกแบบไบนารี (Binary Classification)

การจำแนกแบบไบนารี คือการแบ่งประเภทของตัวอย่างข้อมูลออกเป็น 2 กลุ่มให้ถูกต้อง เช่น ปกติ/ผิดปกติ บวก/ลบ ถูก/ผิด เป็นต้น ซึ่งในตัวอย่างนี้ ผมใช้ข้อมูลของลักษณะผู้ใช้งานบัตรเครดิตประเทศไต้หวันระหว่างเดือนเมษายนถึงเดือนกันยายน ปี 2005 มาทำนายว่า ผู้ใช้คนไหนมีโอกาสที่จะผิดนัดชำระหนี้ของบัตรเครดิต ซึ่งผมได้อ้างอิงมาจาก ที่นี่

1 อ่านข้อมูล

เนื่องจากข้อมูลนี้ทาง Pycaret ได้มีให้อยู่แล้ว ผมจะทำการเรียกใช้ข้อมูลนี้ด้วยคำสั่งด้านล่าง

from pycaret.datasets import get_datadataset = get_data('credit')

ข้อมูลชุดนี้มีจำนวน 24,000 ตัวอย่าง และมีตัวแปร 24 ตัว ซึ่งแต่ละตัวแปรมีความหมาย ดังนี้

  • LIMIT_BAL: จำนวนเครดิตที่ได้รับ (NT dollar)
  • SEX: เพศ (1 = ชาย; 2 = หญิง)
  • EDUCATION: การศึกษาสูงสุด (1 = มหาบัณฑิตขึ้นไป; 2 = บัณฑิต; 3 = มัธยม; 4 = อื่น ๆ)
  • MARRIAGE: สถานภาพการสมรส (1 = แต่งงาน; 2 = โสด; 3 = อื่น ๆ)
  • AGE: อายุ (ปี)
  • PAY_0 ถึง PAY_6: สถานะการชำระเงินก่อนหน้านี้ อาทิ PAY_1 = สถานะการชำระเงินเดือนที่แล้ว ซึ่งค่าที่ระบุถึงสถานะได้แก่ -1 = ชำระตรงเวลา; 0 = ไม่มียอดการค้างจ่าย; 1 = ชำระช้าไป 1 เดือน; 2 = ชำระช้าไป 2 เดือน; …
  • BILL_AMT1 ถึง BILL_AMT6: ยอดที่ต้องชำระเงินก่อนหน้านี้ อาทิ BILL_AMT1 = ยอดที่ต้องชำระเงินของเดือนที่แล้ว
  • PAY_AMT1 ถึง PAY_AMT6: ยอดที่ผู้ใช้ชำระเงินก่อนหน้านี้ อาทิ PAY_AMT1 = ยอดที่ผู้ใช้ชำระเงินของเดือนที่แล้ว
  • default: ค่าที่ต้องการทำนาย ( 0 = ไม่ผิดการชำระเงิน; 1 = ผิดการชำระเงิน)

จากนั้นทำการแบ่งข้อมูลออกเป็น 2 ชุดคือ ข้อมูลสำหรับการพัฒนาโมเดล (training data) และข้อมูลสำหรับการทดสอบโมเดลตอนท้าย (unseen data) อันเปรียบเสมือนการจำลองเมื่อใช้งานโมเดลดังกล่าวขึ้นมาจริง ๆ ว่าผลจะออกมาเป็นอย่างไร ซึ่ง PyCaret สามารถแบ่งข้อมูลได้ง่าย ๆ ด้วยคำสั่ง sample() ด้านล่าง

สำหรับในตัวอย่างนี้ ผมแบ่งเป็นข้อมูลสำหรับการพัฒนาโมเดลจำนวน 90% ของข้อมูลทั้งหมด และข้อมูลสำหรับการทดสอบโมเดลตอนท้ายจำนวน 10% ของข้อมูลทั้งหมด ตามคำสั่งด้านล่าง

training_data = dataset.sample(frac=0.90, random_state=0)
unseen_data = dataset.drop(training_data.index)
training_data.reset_index(inplace=True, drop=True)
unseen_data.reset_index(inplace=True, drop=True)

2 จัดเตรียมข้อมูล

PyCaret ได้สร้างคำสั่ง setup() เพื่อให้ผู้ใช้งานตั้งค่าการจัดการข้อมูลให้เหมาะแก่การพัฒนาโมเดล ตลอดจนการตั้งค่ากระบวนการทำงานอื่น อาทิ ท่านสามารถเพิ่มคำสั่ง use_gpu = True หากเครื่องคอมพิวเตอร์ของท่านมี GPU เพื่อให้การประมวลผลโมเดลของเท่าเร็วขึ้น (สามารถเพิ่มขึ้นได้กว่า 10 เท่า) ซึ่งตัวอย่างโมเดลที่สามาใช้ GPU ได้ มีดังนี้ Extreme Gradient Boosting, Catboost, Logistic Support Vector Machine และ Linear Regression

ทั้งนี้ ท่านจำเป็นต้องใช้คำสั่ง setup() เป็นคำสั่งเริ่มต้นเสมอ และจำเป็นต้องใส่ค่าตัวแปรอย่างน้อย 2 ตัว คือ ข้อมูลสำหรับการพัฒนาโมเดล (data) และชื่อตัวแปรของข้อมูลดังกล่าวที่ต้องการทำนาย (target) ตามโค้ดด้านล่าง

from pycaret.classification import *prep_data = setup(data = training_data, target = 'default')

จากนั้นอย่าลืมกด “enter” เพื่อให้ไลบรารี่ประมวลผลต่อในขั้นถัดไป

ซึ่งไลบรารีจะแสดงรายละเอียดของการจัดเตรียมข้อมูลออกมามากมายตามรูปด้านล่าง โดยผมขอเลือกตัวที่สำคัญมาอธิบาย ดังนี้

  • session_id = 2728: ตัวเลขสุ่มขึ้นมาสำหรับการทำการทดลองซ้ำในอนาคต
  • Target = default: ตัวแปรที่โมเดลต้องการนำทาย
  • Original Data = (21600,24): มีข้อมูล 21600 ตัวอย่างและมีทั้งหมด 24 ตัวแปร
  • Missing values = False: ข้อมูลไม่มีค่าว่างในทุกตัวแปรของชุดข้อมูลดังกล่าว
  • Numeric Features = 14: มีตัวแปรที่เป็นค่าตัวเลขทั้งหมด 14 ตัวแปร
  • Categorial Features = 9: มีตัวแปรที่เป็นกลุ่ม (อาทิ เพศ การศึกษาสูงสุด) จำนวน 9 ตัวแปร
  • Transformed Train Set = (15119,86) และ Transformed Test Set = (6481,86): จำนวนตัวอย่างในข้อมูล train และ test ตามด้วย 86 คือตัวแปรที่ได้หลังจากการแปลงข้อมูลที่เป็นกลุ่ม (categorial features) ให้อยู่ในรูปแบบที่เหมาะต่อการพัฒนาโมเดล ยกตัวอย่างคือ เพศ จากเดิมที่มี 1 ตัวแปรคือ 1 และ 2 จะถูกเปลี่ยนเป็น 2 ตัวแปรคือ ชาย หญิง แยกกันเป็น 2 ตัวแปร ซึ่งท่านสามารถศึกษาได้เพิ่มเติม ที่นี
  • Fold Number = 10: การตรวจสอบผลของโมเดลด้วยเทคนิค K-Fold Cross Validation ที่ทำการแบ่งการตรวจสอบผลออกเป็น 10 ชุดข้อมูลย่อย ซึ่งท่านสามารถศึกษาได้เพิ่มเติม ที่นี

ส่วนการจัดการข้อมูลเพื่อเติมและรายละเอียดของตัวแปรอื่นใน setup() ท่านสามารถอ่านได้เพิ่มเติม ที่นี่

3 เปรียบเทียบโมเดลเบื้องต้น

PyCaret จะนำข้อมูลที่ผ่านการทำความสะอาดจาก setup() มาพัฒนาโมเดลต่าง ๆ ที่เกี่ยวข้องพร้อมเปรียบเทียบค่าความแม่นยำมาให้เสร็จสรรพ (ใช้เวลาประมวลโมเดลระยะหนึ่ง) ผ่านคำสั่ง compare_model() ซึ่งจะให้ผลลัพธ์ออกมาเป็นตารางสรุปค่าความแม่นยำที่ใช้ในการวัดผลในหลากมิติ ได้แก่ Accuracy, AUC, Recall, Precision, F1, Kappa, and MCC เฉลี่ยของการทดสอบย่อย 10 ครั้ง (10 fold cross validation) รวมไปถึงเวลาที่ใช้ในการประมวลผลของแต่ละโมเดล

best_baseline_model = compare_models()

จากรูปด้านบน PyCaret ได้ทำการพัฒนโมเดลทั้งหมด 15 โมเดล และได้เรียงโมเดลตามค่าความแม่นยำจากมากไปหาน้อย (ค่าเริ่มต้นคือ accuracy) ทั้งนี้ผู้ใช้สามารถปรับให้เรียงค่าอื่นขึ้นมาก่อนได้ เช่น compare_models(sort = ‘Recall’) เป็นต้น นอกจากนี้ตัวแปร best_baseline_model ในตอนนี้ก็จะเก็บโมเดลที่ดีที่สุดไว้

4 การสร้างโมเดล

แม้ว่าขั้นตอนก่อนหน้านี้ PyCaret ทำการแนะนำโมเดลที่ดีที่สุดเบื้องต้นมาให้แล้ว แต่โมเดลดังกล่าวถูกพัฒนามาจากค่าเริ่มต้นของโมเดลเท่านั้น ซึ่งมีความเป็นไปได้ที่ค่าเริ่มต้นดังกล่าวยังไม่ใช่ค่าที่เหมาะสมที่สุดสำหรับชุดข้อมูลของเรา ซึ่งเราสามารถใช้คำสั่ง tune_model ในการหาค่าพารามิเตอร์ที่เหมาะสม (hyperparameter tuning) ซึ่ง PyCaret จะใช้เทคนิค random grid search ในการหาค่าที่ดีที่สุด

best_model = create_model('ridge')tuned_best_model = tune_model(best_model)

ในตัวอย่างนี้ ผมเลือกโมเดล ridge มาทำการปรับหาค่าพารามิเตอร์ ซึ่งทำให้ค่า accuracy เพิ่มขึ้นเล็กน้อยจาก 82.12% เป็น 82.14% ในขณะที่ค่าความแม่นยำไม่ว่าจะเป็น Recall Precision F1 และ Kappa ก็เพิ่มขึ้นเช่นกัน

5 แสดงแผนภูมิผลลัพธ์ของโมเดล

PyCaret สร้างแผนภูมิด้วยพัฒนาด้วยการเปลี่ยนแปลงพฤติกรรมการทำงานของฟังก์ชั่นหรือคลาสจากไลบรารีแผนภูมิในภาษา Python หลายตัว อาทิ Yellowbrick และ Plotly ซึ่งในตัวอย่างนี้ ผมสร้างแผนภูมิตารางสรุปผลความแม่นยำของโมเดล (confustion matrix) และแผนภูมิแสดงค่าความสำคัญของตัวแปรต่อการพัฒนาโมเดลด้วยการคำนวน feature importance

plot_model(tuned_best_model, plot = 'confusion_matrix')
plot_model(tuned_best_model, plot = 'feature')

6 บันทึกและเรียกใช้ model ที่ถูกพัฒนาแล้ว

ท่านสามารถบันทึกและเรียกใช้ model ที่ถูกพัฒนาแล้วด้วยคำสั่ง save_model() และ load_model() เพื่อทำการวิเคราะห์ข้อมูลสำหรับการทดสอบโมเดลตอนท้ายที่แบ่งไว้ในขั้นตอนแรกด้วยคำสั่ง predict_mode() ด้านล่าง

save_model(tuned_best_model, model_name='best-tuned-model')
loaded_model = load_model('best-tuned-model')predictions = predict_model(loaded_model, data=unseen_data)predictions.head()

PyCaret กับการจัดกลุ่มข้อความ (Topic Model)

การจัดกลุ่มข้อความ (topic model) ซึ่งเป็นหนึ่งในการประยุกต์ใช้งานของการประมวลผลทางภาษา เป็นการค้นหาหัวข้อที่เป็นนามธรรมในข้อมูลข้อความ โดยมีเป้าหมายของการสร้างแบบจำลองหัวข้อในชุดเอกสารโดยอัตโนมัติ ซึ่งในตัวอย่างนี้ ผมใช้ข้อมูลประวัติส่วนตัวของผู้สมัครใช้บริการเงินกู้จาก Kiva Microfunds ที่เป็นองค์ไม่แสวงหากำไรที่ให้คนที่มีรายได้น้อยสามารถกู้ยืมเงินได้ทั่วโลก ซึ่งปกติแล้วคนกลุ่มนี้องค์กรทางการเงินจะปฎิเสธไม่ให้กู้ยืมเนื่องจากเครดิตทางการเงินไม่พอ โดยที่ผมได้อ้างอิงมาจาก ที่นี่

1 อ่านข้อมูล

เนื่องจากข้อมูลนี้ทาง Pycaret ได้มีให้อยู่แล้ว ผมจะทำการเรียกใช้ข้อมูลนี้ด้วยคำสั่งด้านล่าง

from pycaret.datasets import get_datadataset = get_data('kiva')

ข้อมูลชุดนี้มีจำนวน 6,818 ตัวอย่าง และมีตัวแปรซึ่งมีความหมาย ดังนี้

  • country: ประเทศของผู้กู้ยืมเงิน
  • en: เรื่องราวของผู้กู้ยืมเงินที่เขียนประกอบในใบสมัครเป็นภาษาอังกฤษ
  • gender: เพศ (M = ชาย; F= หญิง)
  • loan_amount: จำนวนเงินที่ต้องการกู้ยืม
  • nonpayment: ประเภทการกู้ยืม (lender = กู้ในนามบุคคล, partner = กู้ในนามนิติบุคคล)
  • sector: ภาคอุตสาหกรรมของผู้กู้ยืม
  • status: สถานะการชำระเงิน ( 0 = ไม่ผิดการชำระเงิน; 1 = ผิดการชำระเงิน)

เนื่องจากเป้าหมายของการจัดกลุ่มข้อความเป็นเทคนิคการเรียนรู้ด้วยเครื่องที่ไม่ได้มีการระบุประเภท ทำให้โมเดลจะต้องจัดกลุ่มออกมาเอง ต่างจากตัวอย่างแรกที่มีการวัดผลตามค่าเป้าหมาย ทำให้ไม่มีความจำเป็นต้องแบ่งข้อมูลออกเป็นข้อมูลสำหรับการพัฒนาโมเดลและข้อมูลสำหรับการทดสอบโมเดลตอนท้าย

2 จัดเตรียมข้อมูล

การใช้งานของคำสั่ง setup() แตกต่างออกไปจากตัวอย่างแรกด้วย เพราะต้องจัดการกับตัวอักษรแทนที่จะเป็นตัวเลข ซึ่งปกติแล้วการทำความสะอาดข้อความอักษรนั้น ท่านต้องทำการทำความสะอาดเบื้องต้น ดังนี้

  • Removing Numeric and Special Characters: การลบตัวเลขและอักขระพิเศษ อาทิ ! @ # $ % ออกจากข้อความ
  • Word Tokenization: การแบ่งข้อความตัวอักษรให้เป็นคำ ซึ่งเป็นหัวใจสำคัญในการประมวลผลทางภาษา ตัวอย่างการตัดคำ “ฉันไปกรุงเทพฯ” เป็น [“ฉัน”, “ไป”, “กรุงเทพฯ”] ซึ่งรายละเอียดการตัดคำสามารถอ่านเพิ่มเติมได้ ที่นี่
  • Stopword Removal: ลบคำทั่วไปที่ไม่ได้ส่งผลต่อความหมายทางภาษาและถูกใช้เป็นส่วนหนึ่งของประโยคทั่วไปออก เช่น ที่ ซึ่ง อัน เป็นต้น ซึ่งรายละเอียดคำทั่วไปสามารถอ่านเพิ่มเติมได้ ที่นี่
  • Lemmatizing: สำหรับคำแต่ละคำในภาษาอังกฤษมักถูกเปลี่ยนรูปเมื่อถูกใช้ในช่วงเวลาต่างๆ หรือเปลี่ยนแปลงตามประธานของประโยค เช่นคำว่า “walk” สามารถถูกเขียนได้หลากหลาย ได้แก่ “walks” “walked” “walking” ดังน้ันการที่แปรงคำทั้ง 3 คำให้เป็นรากศัพท์ ซึ่งในกรณีนี้คือ “walk” ไปเลยคำเดียว จะทำให้การประมวลผลภาษาทำได้ดีขึ้น
  • Custom Stopwords: หลายครั้งคำศัพท์บางคำอาจถูกใช้บ่อยในบางหัวข้อ แต่ไม่ได้ถูกจัดอยู่ใน stopword ทั่วไป ยกตัวอย่าง หัวข้อการเงิน คำว่า “ธนาคาร” และ “เงิน” มักเป็นคำที่ถูกปรากฏเกือบทุกประโยค ซึ่งเราควรลบคำพวกนี้ออกไป

ในขั้นตอนการทำความสะอาดข้อมูล ท่านทำตามคำสั่งด้านล่างนี้

from pycaret.nlp import *prep_data = setup(data = training_data, target = 'en')

ซึ่งจะได้รายละเอียดออกมา ดังนี้

  • session_id = 4434: ตัวเลขสุ่มขึ้นมาสำหรับการทำการทดลองซ้ำในอนาคต
  • Documents =6818: มีข้อมูล 6818 ตัวอย่าง
  • Vocab Size = 10671: จำนวนคำศัพท์ทั้งหมดหลังผ่านการทำความสะอาดเบื้องต้น เช่น removal of stopwords, bigram/trigram extraction, lemmatization etc.
  • Custom Stopwords = False: ไม่ได้มีการเพิ่มคำทั่วไปเพิ่มเติม

3 การสร้างโมเดล

โมเดลในการจัดกลุ่มข้อความตัวพื้นฐานที่ทุกคนใช้คือ Latent Dirichlet Allocation หรือ LDA ที่มีหน้าที่ในการหา หัวข้อที่แฝงหรือซ่อนอยู่ในเอกสาร โดยผลลัพธ์ของโมเดลจะเป็นการบอกว่า เอกสารแต่ละชิ้นควรอยู่ใน topic ที่ 0, 1, 2, 3 ซึ่งรายละเอียดการทำงานของโมเดล LDA เพิ่มเติม ผมแนะนำให้ท่านอ่าน ที่นี่

สำหรับการโค้ดของ PyCaret สามารถทำได้ง่าย ๆ ด้วยคำสั่ง

model = create_model('lda')print(model)

PyCaret คำนวนเลือกโมเดล LDA ที่มีรายละเอียดดังนี้

ซึ่งแบ่งกลุ่มของผู้กู้ยืมออกเป็น 4 กลุ่มโดยที่รูปข้างล่างจะเห็นได้ว่า มีแถวข้อมูลเพิ่มมาอีก 6 แถว โดยแถวที่ Topic_0 ถึง Topic_3 คือค่าความน่าจะเป็นของเอกสารกลุ่มนั้น ๆ Dominant_Topic คือกลุ่มที่เอกสารดังกล่าวมีค่าความน่าจะเป็นสูงสุด และ Perc_Dominant_Topic คือเปอร์เซ็นความน่าจะเป็นของกลุ่มที่เอกสารดังกล่าวมีค่าความน่าจะเป็นสูงสุด

4 แสดงแผนภูมิผลลัพธ์ของโมเดล

ในตัวอย่างนี้ผมสร้างแผนภูมิแสดงคำที่เกิดขึ้นบ่อยในเอกสารทั้งหมด จำนวนเอกสารในแต่ละกลุ่ม และ word cloud ของคำในแต่ละกลุ่ม

plot_model()
plot_model(model, plot = 'topic_distribution')
plot_model(model, plot = 'wordcloud', topic_num = 'Topic 0')
plot_model(model, plot = 'wordcloud', topic_num = 'Topic 1')
plot_model(model, plot = 'wordcloud', topic_num = 'Topic 2')
plot_model(model, plot = 'wordcloud', topic_num = 'Topic 3')

5 บันทึกและเรียกใช้ model ที่ถูกพัฒนาแล้ว

save_model(model, model_name='nlp-model')loaded_model = load_model('nlp-model')print(loaded_model)

สุดท้ายนี้ PyCaret ได้เขียนคู่มือการประยุกต์ใช้ PyCaret ในการแก้ไขโจทย์นอกเหนือจากที่ผมเขียนในบทความนี้ (ที่นี่) และมีวิดิโอที่ทางผู้พัฒนาได้จัดทำไว้ (ที่นี่) เพื่อให้ท่านสามารถเริ่มต้นใช้งาน PyCaret ได้ง่ายมากขึ้น

จบไปแล้วนะครับสำหรับบทความแนะนำ PyCaret ในตอนที่ 2 สำหรับบทความตอนที่ 3 จะพูดถึงการเปรียบเทียบ PyCaret กับ scikit-learn ซึ่งเป็นอีกหนึ่งไลบรารีช่วยวิเคราะห์ข้อมูลด้วยเทคนิคการเรียนรู้ด้วยเครื่องที่คล้ายคลึงกัน (เข้าไปอ่านได้ ที่นี่) และหากต้องการกลับไปอ่านถึงคุณสมบัติของไลบรารีนี้เบื้องต้น ท่านสามารถกลับไปอ่านตอนที่ 1 ได้ที่นี่

#machinelearning #datascience #datasciencearchitecture #pycaret #วิศวะคอมฯจุฬาฯ #cpengchula

เอกสารอ้างอิง

Jirachanchaisiri, Pongsakorn. 2019. “รู้จักกับ Latent Dirichlet Allocation (Part 1).” Medium. March 14, 2019. https://pongsakorn-jrc.medium.com/%E0%B8%A3%E0%B8%B9%E0%B9%89%E0%B8%88%E0%B8%B1%E0%B8%81%E0%B8%81%E0%B8%B1%E0%B8%9A-latent-dirichlet-allocation-part-1-2495acfcda86.

Kanoktipsatharporn, Surapong. 2019. “One Hot Encoding คืออะไร ประโยชน์ ข้อดี ข้อเสีย ของ One Hot Encoding ทำไมต้องใช้ One Hot Encoding ใน Machine Learning.” BUA Labs. September 19, 2019. https://www.bualabs.com/archives/1902/what-is-one-hot-encoding-benefit-one-hot-encoding-why-one-hot-encoding-in-machine-learning/.

“Plotly: The Front End for ML and Data Science Models.” n.d. Plotly.com. https://plotly.com.

Prasertsom, Patipan. 2020. “สกัดใจความสำคัญของข้อความด้วยเทคนิคการประมวลผลทางภาษาเบื้องต้น: TF-IDF, Part 2.” Big Data Thailand. November 11, 2020. https://bigdata.go.th/big-data-101/data-science/tf-idf-2/.

stackpython. 2020. “Machine Learning Ep.2 : Cross Validation.” Medium. January 18, 2020. https://stackpython.medium.com/machine-learning-ep-2-cross-validation-70cbefb2dda4#:~:text=K%2DFold%20Cross%20Validation%20%E0%B8%84%E0%B8%B7%E0%B8%AD.

“Stop Words คืออะไร ใน Natural Language Processing — NLP Ep.2.” 2019. BUA Labs. November 17, 2019. https://www.bualabs.com/archives/2937/what-is-stop-words-in-natural-language-processing-nlp-ep-2/.

“Welcome to PyCaret — PyCaret Official.” 2020. Gitbook.io. 2020. https://pycaret.gitbook.io/docs/.

“Yellowbrick: Machine Learning Visualization — Yellowbrick V1.4 Documentation.” n.d. Www.scikit-Yb.org. https://www.scikit-yb.org/en/latest/.

--

--