You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
336 lines
20 KiB
336 lines
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 สำหรับ Python
|
|
- `solution/` - โค้ดคำตอบ (เวอร์ชัน Python และ R)
|
|
- `assignment.md` - แบบฝึกหัด
|
|
- `images/` - ทรัพยากรภาพประกอบ
|
|
|
|
## คำสั่งการตั้งค่า
|
|
|
|
### สำหรับบทเรียน Python
|
|
|
|
บทเรียนส่วนใหญ่ใช้ Jupyter notebooks ติดตั้ง dependencies ที่จำเป็น:
|
|
|
|
```bash
|
|
# 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`:
|
|
|
|
```bash
|
|
# Install R and required packages
|
|
# In R console:
|
|
install.packages(c("tidyverse", "tidymodels", "caret"))
|
|
```
|
|
|
|
### สำหรับแอปพลิเคชันแบบทดสอบ
|
|
|
|
แอปแบบทดสอบเป็นแอป Vue.js ที่อยู่ในไดเรกทอรี `quiz-app/`:
|
|
|
|
```bash
|
|
cd quiz-app
|
|
npm install
|
|
```
|
|
|
|
### สำหรับเว็บไซต์เอกสาร
|
|
|
|
เพื่อรันเอกสารในเครื่อง:
|
|
|
|
```bash
|
|
# Install Docsify
|
|
npm install -g docsify-cli
|
|
|
|
# Serve from repository root
|
|
docsify serve
|
|
|
|
# Access at http://localhost:3000
|
|
```
|
|
|
|
## เวิร์กโฟลว์การพัฒนา
|
|
|
|
### การทำงานกับ Lesson Notebooks
|
|
|
|
1. ไปยังไดเรกทอรีบทเรียน (เช่น `2-Regression/1-Tools/`)
|
|
2. เปิด Jupyter notebook:
|
|
```bash
|
|
jupyter notebook notebook.ipynb
|
|
```
|
|
3. ทำเนื้อหาและแบบฝึกหัดในบทเรียน
|
|
4. ตรวจสอบคำตอบในโฟลเดอร์ `solution/` หากจำเป็น
|
|
|
|
### การพัฒนา Python
|
|
|
|
- บทเรียนใช้ไลบรารีข้อมูลมาตรฐานของ Python
|
|
- Jupyter notebooks สำหรับการเรียนรู้แบบโต้ตอบ
|
|
- โค้ดคำตอบมีอยู่ในโฟลเดอร์ `solution/` ของแต่ละบทเรียน
|
|
|
|
### การพัฒนา R
|
|
|
|
- บทเรียน R อยู่ในรูปแบบ `.rmd` (R Markdown)
|
|
- คำตอบอยู่ในโฟลเดอร์ย่อย `solution/R/`
|
|
- ใช้ RStudio หรือ Jupyter พร้อม R kernel เพื่อรัน R notebooks
|
|
|
|
### การพัฒนาแอปพลิเคชันแบบทดสอบ
|
|
|
|
```bash
|
|
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
|
|
```
|
|
|
|
## คำแนะนำการทดสอบ
|
|
|
|
### การทดสอบแอปพลิเคชันแบบทดสอบ
|
|
|
|
```bash
|
|
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:
|
|
|
|
1. **ข้อกำหนดเบื้องต้น**:
|
|
- บัญชี Azure
|
|
- Repository GitHub (ที่ fork แล้ว)
|
|
|
|
2. **ปรับใช้ใน Azure**:
|
|
- สร้างทรัพยากร Azure Static Web App
|
|
- เชื่อมต่อกับ Repository GitHub
|
|
- ตั้งค่าตำแหน่งแอป: `/quiz-app`
|
|
- ตั้งค่าตำแหน่งผลลัพธ์: `dist`
|
|
- Azure สร้าง GitHub Actions workflow อัตโนมัติ
|
|
|
|
3. **GitHub Actions Workflow**:
|
|
- ไฟล์ workflow สร้างที่ `.github/workflows/azure-static-web-apps-*.yml`
|
|
- สร้างและปรับใช้อัตโนมัติเมื่อ push ไปยัง branch main
|
|
|
|
### เอกสาร PDF
|
|
|
|
สร้าง PDF จากเอกสาร:
|
|
|
|
```bash
|
|
npm install
|
|
npm run convert
|
|
```
|
|
|
|
## เวิร์กโฟลว์การแปลภาษา
|
|
|
|
**สำคัญ**: การแปลภาษาเป็นแบบอัตโนมัติผ่าน GitHub Actions โดยใช้ Co-op Translator
|
|
|
|
- การแปลจะถูกสร้างอัตโนมัติเมื่อมีการเปลี่ยนแปลง push ไปยัง branch `main`
|
|
- **ห้ามแปลเนื้อหาด้วยตนเอง** - ระบบจัดการให้
|
|
- Workflow กำหนดใน `.github/workflows/co-op-translator.yml`
|
|
- ใช้บริการ Azure AI/OpenAI สำหรับการแปล
|
|
- รองรับมากกว่า 40 ภาษา
|
|
|
|
## แนวทางการมีส่วนร่วม
|
|
|
|
### สำหรับผู้มีส่วนร่วมด้านเนื้อหา
|
|
|
|
1. **Fork repository** และสร้าง feature branch
|
|
2. **แก้ไขเนื้อหาบทเรียน** หากเพิ่ม/อัปเดตบทเรียน
|
|
3. **ห้ามแก้ไขไฟล์ที่แปลแล้ว** - ระบบสร้างอัตโนมัติ
|
|
4. **ทดสอบโค้ดของคุณ** - ตรวจสอบให้แน่ใจว่าเซลล์ใน notebook ทั้งหมดรันสำเร็จ
|
|
5. **ตรวจสอบลิงก์และภาพ** ว่าทำงานถูกต้อง
|
|
6. **ส่ง 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](CODE_OF_CONDUCT.md)
|
|
- **CLA**: คุณจะต้องลงนามใน Contributor License Agreement
|
|
|
|
## โครงสร้างบทเรียน
|
|
|
|
แต่ละบทเรียนมีรูปแบบที่สม่ำเสมอ:
|
|
|
|
1. **แบบทดสอบก่อนการบรรยาย** - ทดสอบความรู้พื้นฐาน
|
|
2. **เนื้อหาบทเรียน** - คำแนะนำและคำอธิบายที่เขียนไว้
|
|
3. **การสาธิตโค้ด** - ตัวอย่างแบบลงมือทำใน notebooks
|
|
4. **การตรวจสอบความรู้** - ตรวจสอบความเข้าใจตลอดบทเรียน
|
|
5. **ความท้าทาย** - ใช้แนวคิดด้วยตนเอง
|
|
6. **งานมอบหมาย** - การฝึกฝนเพิ่มเติม
|
|
7. **แบบทดสอบหลังการบรรยาย** - ประเมินผลการเรียนรู้
|
|
|
|
## อ้างอิงคำสั่งทั่วไป
|
|
|
|
```bash
|
|
# 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 สำหรับผู้เริ่มต้น](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum)
|
|
- **แอปแบบทดสอบ**: [แบบทดสอบออนไลน์](https://ff-quizzes.netlify.app/en/ml/)
|
|
- **กระดานสนทนา**: [GitHub Discussions](https://github.com/microsoft/ML-For-Beginners/discussions)
|
|
- **วิดีโอแนะนำ**: [YouTube Playlist](https://aka.ms/ml-beginners-videos)
|
|
|
|
## เทคโนโลยีสำคัญ
|
|
|
|
- **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](https://github.com/Azure/co-op-translator) แม้ว่าเราจะพยายามให้การแปลมีความถูกต้อง แต่โปรดทราบว่าการแปลอัตโนมัติอาจมีข้อผิดพลาดหรือความไม่ถูกต้อง เอกสารต้นฉบับในภาษาดั้งเดิมควรถือเป็นแหล่งข้อมูลที่เชื่อถือได้ สำหรับข้อมูลที่สำคัญ ขอแนะนำให้ใช้บริการแปลภาษามนุษย์ที่มีความเชี่ยวชาญ เราไม่รับผิดชอบต่อความเข้าใจผิดหรือการตีความผิดที่เกิดจากการใช้การแปลนี้ |