20 KiB
AGENTS.md
ภาพรวมของโครงการ
นี่คือ Machine Learning for Beginners หลักสูตรครอบคลุม 12 สัปดาห์ 26 บทเรียนที่เน้นแนวคิดการเรียนรู้ของเครื่องแบบคลาสสิกโดยใช้ Python (ส่วนใหญ่ใช้ Scikit-learn) และ R โครงการนี้ออกแบบมาเพื่อการเรียนรู้ด้วยตนเอง พร้อมด้วยโปรเจกต์แบบลงมือทำ คำถามแบบทดสอบ และงานมอบหมาย แต่ละบทเรียนจะสำรวจแนวคิด ML ผ่านข้อมูลจริงจากวัฒนธรรมและภูมิภาคต่างๆ ทั่วโลก
องค์ประกอบสำคัญ:
- เนื้อหาการศึกษา: 26 บทเรียนครอบคลุมการแนะนำ ML, การถดถอย, การจำแนกประเภท, การจัดกลุ่ม, NLP, การวิเคราะห์อนุกรมเวลา และการเรียนรู้แบบเสริมแรง
- แอปพลิเคชันแบบทดสอบ: แอปแบบทดสอบที่สร้างด้วย Vue.js พร้อมการประเมินก่อนและหลังบทเรียน
- รองรับหลายภาษา: การแปลอัตโนมัติเป็นมากกว่า 40 ภาษาโดยใช้ GitHub Actions
- รองรับสองภาษา: บทเรียนมีทั้งใน Python (Jupyter notebooks) และ R (ไฟล์ R Markdown)
- การเรียนรู้แบบโปรเจกต์: แต่ละหัวข้อมีโปรเจกต์และงานมอบหมายที่ลงมือทำจริง
โครงสร้างของ Repository
ML-For-Beginners/
├── 1-Introduction/ # ML basics, history, fairness, techniques
├── 2-Regression/ # Regression models with Python/R
├── 3-Web-App/ # Flask web app for ML model deployment
├── 4-Classification/ # Classification algorithms
├── 5-Clustering/ # Clustering techniques
├── 6-NLP/ # Natural Language Processing
├── 7-TimeSeries/ # Time series forecasting
├── 8-Reinforcement/ # Reinforcement learning
├── 9-Real-World/ # Real-world ML applications
├── quiz-app/ # Vue.js quiz application
├── translations/ # Auto-generated translations
└── sketchnotes/ # Visual learning aids
แต่ละโฟลเดอร์บทเรียนมักจะมี:
README.md
- เนื้อหาหลักของบทเรียนnotebook.ipynb
- Jupyter notebook สำหรับ Pythonsolution/
- โค้ดคำตอบ (เวอร์ชัน Python และ R)assignment.md
- แบบฝึกหัดimages/
- ทรัพยากรภาพประกอบ
คำสั่งการตั้งค่า
สำหรับบทเรียน Python
บทเรียนส่วนใหญ่ใช้ Jupyter notebooks ติดตั้ง dependencies ที่จำเป็น:
# Install Python 3.8+ if not already installed
python --version
# Install Jupyter
pip install jupyter
# Install common ML libraries
pip install scikit-learn pandas numpy matplotlib seaborn
# For specific lessons, check lesson-specific requirements
# Example: Web App lesson
pip install flask
สำหรับบทเรียน R
บทเรียน R อยู่ในโฟลเดอร์ solution/R/
ในรูปแบบ .rmd
หรือ .ipynb
:
# Install R and required packages
# In R console:
install.packages(c("tidyverse", "tidymodels", "caret"))
สำหรับแอปพลิเคชันแบบทดสอบ
แอปแบบทดสอบเป็นแอป Vue.js ที่อยู่ในไดเรกทอรี quiz-app/
:
cd quiz-app
npm install
สำหรับเว็บไซต์เอกสาร
เพื่อรันเอกสารในเครื่อง:
# Install Docsify
npm install -g docsify-cli
# Serve from repository root
docsify serve
# Access at http://localhost:3000
เวิร์กโฟลว์การพัฒนา
การทำงานกับ Lesson Notebooks
- ไปยังไดเรกทอรีบทเรียน (เช่น
2-Regression/1-Tools/
) - เปิด Jupyter notebook:
jupyter notebook notebook.ipynb
- ทำเนื้อหาและแบบฝึกหัดในบทเรียน
- ตรวจสอบคำตอบในโฟลเดอร์
solution/
หากจำเป็น
การพัฒนา Python
- บทเรียนใช้ไลบรารีข้อมูลมาตรฐานของ Python
- Jupyter notebooks สำหรับการเรียนรู้แบบโต้ตอบ
- โค้ดคำตอบมีอยู่ในโฟลเดอร์
solution/
ของแต่ละบทเรียน
การพัฒนา R
- บทเรียน R อยู่ในรูปแบบ
.rmd
(R Markdown) - คำตอบอยู่ในโฟลเดอร์ย่อย
solution/R/
- ใช้ RStudio หรือ Jupyter พร้อม R kernel เพื่อรัน R notebooks
การพัฒนาแอปพลิเคชันแบบทดสอบ
cd quiz-app
# Start development server
npm run serve
# Access at http://localhost:8080
# Build for production
npm run build
# Lint and fix files
npm run lint
คำแนะนำการทดสอบ
การทดสอบแอปพลิเคชันแบบทดสอบ
cd quiz-app
# Lint code
npm run lint
# Build to verify no errors
npm run build
หมายเหตุ: นี่เป็น repository หลักสูตรการศึกษา ไม่มีการทดสอบอัตโนมัติสำหรับเนื้อหาบทเรียน การตรวจสอบทำได้โดย:
- ทำแบบฝึกหัดในบทเรียน
- รันเซลล์ใน notebook สำเร็จ
- ตรวจสอบผลลัพธ์กับคำตอบที่คาดหวังในโฟลเดอร์คำตอบ
แนวทางการเขียนโค้ด
โค้ด Python
- ปฏิบัติตามแนวทาง PEP 8
- ใช้ชื่อตัวแปรที่ชัดเจนและอธิบายได้
- เพิ่มคอมเมนต์สำหรับการดำเนินการที่ซับซ้อน
- Jupyter notebooks ควรมีเซลล์ markdown อธิบายแนวคิด
JavaScript/Vue.js (แอปแบบทดสอบ)
- ปฏิบัติตามแนวทางของ Vue.js
- การตั้งค่า ESLint ใน
quiz-app/package.json
- รัน
npm run lint
เพื่อตรวจสอบและแก้ไขปัญหาอัตโนมัติ
เอกสาร
- ไฟล์ Markdown ควรชัดเจนและมีโครงสร้างดี
- รวมตัวอย่างโค้ดใน fenced code blocks
- ใช้ลิงก์แบบสัมพัทธ์สำหรับการอ้างอิงภายใน
- ปฏิบัติตามรูปแบบที่มีอยู่แล้ว
การสร้างและการปรับใช้
การปรับใช้แอปพลิเคชันแบบทดสอบ
แอปแบบทดสอบสามารถปรับใช้ใน Azure Static Web Apps:
-
ข้อกำหนดเบื้องต้น:
- บัญชี Azure
- Repository GitHub (ที่ fork แล้ว)
-
ปรับใช้ใน Azure:
- สร้างทรัพยากร Azure Static Web App
- เชื่อมต่อกับ Repository GitHub
- ตั้งค่าตำแหน่งแอป:
/quiz-app
- ตั้งค่าตำแหน่งผลลัพธ์:
dist
- Azure สร้าง GitHub Actions workflow อัตโนมัติ
-
GitHub Actions Workflow:
- ไฟล์ workflow สร้างที่
.github/workflows/azure-static-web-apps-*.yml
- สร้างและปรับใช้อัตโนมัติเมื่อ push ไปยัง branch main
- ไฟล์ workflow สร้างที่
เอกสาร PDF
สร้าง PDF จากเอกสาร:
npm install
npm run convert
เวิร์กโฟลว์การแปลภาษา
สำคัญ: การแปลภาษาเป็นแบบอัตโนมัติผ่าน GitHub Actions โดยใช้ Co-op Translator
- การแปลจะถูกสร้างอัตโนมัติเมื่อมีการเปลี่ยนแปลง push ไปยัง branch
main
- ห้ามแปลเนื้อหาด้วยตนเอง - ระบบจัดการให้
- Workflow กำหนดใน
.github/workflows/co-op-translator.yml
- ใช้บริการ Azure AI/OpenAI สำหรับการแปล
- รองรับมากกว่า 40 ภาษา
แนวทางการมีส่วนร่วม
สำหรับผู้มีส่วนร่วมด้านเนื้อหา
- Fork repository และสร้าง feature branch
- แก้ไขเนื้อหาบทเรียน หากเพิ่ม/อัปเดตบทเรียน
- ห้ามแก้ไขไฟล์ที่แปลแล้ว - ระบบสร้างอัตโนมัติ
- ทดสอบโค้ดของคุณ - ตรวจสอบให้แน่ใจว่าเซลล์ใน notebook ทั้งหมดรันสำเร็จ
- ตรวจสอบลิงก์และภาพ ว่าทำงานถูกต้อง
- ส่ง pull request พร้อมคำอธิบายที่ชัดเจน
แนวทางการส่ง Pull Request
- รูปแบบชื่อเรื่อง:
[Section] คำอธิบายการเปลี่ยนแปลงโดยย่อ
- ตัวอย่าง:
[Regression] แก้ไขคำผิดในบทเรียน 5
- ตัวอย่าง:
[Quiz-App] อัปเดต dependencies
- ตัวอย่าง:
- ก่อนส่ง:
- ตรวจสอบให้แน่ใจว่าเซลล์ใน notebook ทั้งหมดรันโดยไม่มีข้อผิดพลาด
- รัน
npm run lint
หากแก้ไข quiz-app - ตรวจสอบรูปแบบ Markdown
- ทดสอบตัวอย่างโค้ดใหม่
- PR ต้องมี:
- คำอธิบายการเปลี่ยนแปลง
- เหตุผลของการเปลี่ยนแปลง
- ภาพหน้าจอหากมีการเปลี่ยนแปลง UI
- จรรยาบรรณ: ปฏิบัติตาม Microsoft Open Source Code of Conduct
- CLA: คุณจะต้องลงนามใน Contributor License Agreement
โครงสร้างบทเรียน
แต่ละบทเรียนมีรูปแบบที่สม่ำเสมอ:
- แบบทดสอบก่อนการบรรยาย - ทดสอบความรู้พื้นฐาน
- เนื้อหาบทเรียน - คำแนะนำและคำอธิบายที่เขียนไว้
- การสาธิตโค้ด - ตัวอย่างแบบลงมือทำใน notebooks
- การตรวจสอบความรู้ - ตรวจสอบความเข้าใจตลอดบทเรียน
- ความท้าทาย - ใช้แนวคิดด้วยตนเอง
- งานมอบหมาย - การฝึกฝนเพิ่มเติม
- แบบทดสอบหลังการบรรยาย - ประเมินผลการเรียนรู้
อ้างอิงคำสั่งทั่วไป
# Python/Jupyter
jupyter notebook # Start Jupyter server
jupyter notebook notebook.ipynb # Open specific notebook
pip install -r requirements.txt # Install dependencies (where available)
# Quiz App
cd quiz-app
npm install # Install dependencies
npm run serve # Development server
npm run build # Production build
npm run lint # Lint and fix
# Documentation
docsify serve # Serve documentation locally
npm run convert # Generate PDF
# Git workflow
git checkout -b feature/my-change # Create feature branch
git add . # Stage changes
git commit -m "Description" # Commit changes
git push origin feature/my-change # Push to remote
ทรัพยากรเพิ่มเติม
- Microsoft Learn Collection: โมดูล ML สำหรับผู้เริ่มต้น
- แอปแบบทดสอบ: แบบทดสอบออนไลน์
- กระดานสนทนา: GitHub Discussions
- วิดีโอแนะนำ: YouTube Playlist
เทคโนโลยีสำคัญ
- Python: ภาษาเริ่มต้นสำหรับบทเรียน ML (Scikit-learn, Pandas, NumPy, Matplotlib)
- R: การใช้งานทางเลือกโดยใช้ tidyverse, tidymodels, caret
- Jupyter: Notebooks แบบโต้ตอบสำหรับบทเรียน Python
- R Markdown: เอกสารสำหรับบทเรียน R
- Vue.js 3: เฟรมเวิร์กสำหรับแอปแบบทดสอบ
- Flask: เฟรมเวิร์กเว็บแอปพลิเคชันสำหรับการปรับใช้โมเดล ML
- Docsify: ตัวสร้างเว็บไซต์เอกสาร
- GitHub Actions: CI/CD และการแปลอัตโนมัติ
ข้อควรพิจารณาด้านความปลอดภัย
- ไม่มีข้อมูลลับในโค้ด: ห้าม commit API keys หรือข้อมูลรับรอง
- Dependencies: อัปเดตแพ็กเกจ npm และ pip ให้ทันสมัย
- ข้อมูลผู้ใช้: ตัวอย่างเว็บแอป Flask มีการตรวจสอบข้อมูลเบื้องต้น
- ข้อมูลที่ละเอียดอ่อน: ชุดข้อมูลตัวอย่างเป็นข้อมูลสาธารณะและไม่ละเอียดอ่อน
การแก้ไขปัญหา
Jupyter Notebooks
- ปัญหา Kernel: รีสตาร์ท kernel หากเซลล์ค้าง: Kernel → Restart
- ข้อผิดพลาดการนำเข้า: ตรวจสอบให้แน่ใจว่าติดตั้งแพ็กเกจที่จำเป็นทั้งหมดด้วย pip
- ปัญหาเส้นทาง: รัน notebooks จากไดเรกทอรีที่มีไฟล์นั้น
แอปพลิเคชันแบบทดสอบ
- npm install ล้มเหลว: ล้างแคช npm:
npm cache clean --force
- ปัญหาพอร์ต: เปลี่ยนพอร์ตด้วย:
npm run serve -- --port 8081
- ข้อผิดพลาดการสร้าง: ลบ
node_modules
และติดตั้งใหม่:rm -rf node_modules && npm install
บทเรียน R
- แพ็กเกจไม่พบ: ติดตั้งด้วย:
install.packages("package-name")
- การเรนเดอร์ RMarkdown: ตรวจสอบให้แน่ใจว่าติดตั้งแพ็กเกจ rmarkdown
- ปัญหา Kernel: อาจต้องติดตั้ง IRkernel สำหรับ Jupyter
หมายเหตุเฉพาะโครงการ
- นี่เป็นหลักสูตร การเรียนรู้ ไม่ใช่โค้ดสำหรับการผลิต
- เน้นที่ การเข้าใจแนวคิด ML ผ่านการลงมือทำ
- ตัวอย่างโค้ดให้ความสำคัญกับ ความชัดเจนมากกว่าการปรับแต่ง
- บทเรียนส่วนใหญ่ เป็นแบบแยกส่วน และสามารถทำได้อย่างอิสระ
- มีคำตอบให้ แต่ผู้เรียนควรลองทำแบบฝึกหัดก่อน
- Repository ใช้ Docsify สำหรับเอกสารเว็บโดยไม่ต้องมีขั้นตอนการสร้าง
- Sketchnotes ให้สรุปภาพรวมของแนวคิด
- รองรับหลายภาษา ทำให้เนื้อหาเข้าถึงได้ทั่วโลก
ข้อจำกัดความรับผิดชอบ:
เอกสารนี้ได้รับการแปลโดยใช้บริการแปลภาษา AI Co-op Translator แม้ว่าเราจะพยายามให้การแปลมีความถูกต้อง แต่โปรดทราบว่าการแปลอัตโนมัติอาจมีข้อผิดพลาดหรือความไม่ถูกต้อง เอกสารต้นฉบับในภาษาดั้งเดิมควรถือเป็นแหล่งข้อมูลที่เชื่อถือได้ สำหรับข้อมูลที่สำคัญ ขอแนะนำให้ใช้บริการแปลภาษามนุษย์ที่มีความเชี่ยวชาญ เราไม่รับผิดชอบต่อความเข้าใจผิดหรือการตีความผิดที่เกิดจากการใช้การแปลนี้