22 KiB
AGENTS.md
ภาพรวมของโครงการ
Data Science for Beginners เป็นหลักสูตรที่ครอบคลุมระยะเวลา 10 สัปดาห์ รวม 20 บทเรียน ซึ่งสร้างขึ้นโดย Microsoft Azure Cloud Advocates โดยที่เก็บนี้เป็นแหล่งเรียนรู้ที่สอนแนวคิดพื้นฐานของวิทยาศาสตร์ข้อมูลผ่านบทเรียนที่เน้นโครงการ รวมถึง Jupyter notebooks, แบบทดสอบเชิงโต้ตอบ และการมอบหมายงานที่ต้องลงมือปฏิบัติ
เทคโนโลยีหลัก:
- Jupyter Notebooks: สื่อการเรียนรู้หลักที่ใช้ Python 3
- Python Libraries: pandas, numpy, matplotlib สำหรับการวิเคราะห์และการแสดงผลข้อมูล
- Vue.js 2: แอปพลิเคชันแบบทดสอบ (โฟลเดอร์ quiz-app)
- Docsify: ตัวสร้างเว็บไซต์เอกสารสำหรับการเข้าถึงแบบออฟไลน์
- Node.js/npm: การจัดการแพ็กเกจสำหรับส่วนประกอบ JavaScript
- Markdown: เนื้อหาบทเรียนและเอกสารทั้งหมด
สถาปัตยกรรม:
- ที่เก็บการศึกษาหลายภาษา พร้อมการแปลที่ครอบคลุม
- โครงสร้างแบ่งเป็นโมดูลบทเรียน (1-Introduction ถึง 6-Data-Science-In-Wild)
- แต่ละบทเรียนประกอบด้วย README, notebooks, การมอบหมายงาน และแบบทดสอบ
- แอปพลิเคชันแบบทดสอบ Vue.js แบบสแตนด์อโลนสำหรับการประเมินก่อน/หลังบทเรียน
- รองรับ GitHub Codespaces และ VS Code dev containers
คำสั่งการตั้งค่า
การตั้งค่าที่เก็บ
# Clone the repository (if not already cloned)
git clone https://github.com/microsoft/Data-Science-For-Beginners.git
cd Data-Science-For-Beginners
การตั้งค่าสภาพแวดล้อม Python
# Create a virtual environment (recommended)
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
# Install common data science libraries (no requirements.txt exists)
pip install jupyter pandas numpy matplotlib seaborn scikit-learn
การตั้งค่าแอปพลิเคชันแบบทดสอบ
# Navigate to quiz app
cd quiz-app
# Install dependencies
npm install
# Start development server
npm run serve
# Build for production
npm run build
# Lint and fix files
npm run lint
เซิร์ฟเวอร์เอกสาร Docsify
# Install Docsify globally
npm install -g docsify-cli
# Serve documentation locally
docsify serve
# Documentation will be available at localhost:3000
การตั้งค่าโครงการการแสดงผล
สำหรับโครงการการแสดงผล เช่น meaningful-visualizations (บทเรียนที่ 13):
# Navigate to starter or solution folder
cd 3-Data-Visualization/13-meaningful-visualizations/starter
# Install dependencies
npm install
# Start development server
npm run serve
# Build for production
npm run build
# Lint files
npm run lint
เวิร์กโฟลว์การพัฒนา
การทำงานกับ Jupyter Notebooks
- เริ่มต้น Jupyter ในโฟลเดอร์รากของที่เก็บ:
jupyter notebook - ไปยังโฟลเดอร์บทเรียนที่ต้องการ
- เปิดไฟล์
.ipynbเพื่อทำแบบฝึกหัด - Notebooks มีคำอธิบายและเซลล์โค้ดในตัว
- ส่วนใหญ่ใช้ pandas, numpy และ matplotlib - ตรวจสอบให้แน่ใจว่าติดตั้งแล้ว
โครงสร้างบทเรียน
แต่ละบทเรียนมักประกอบด้วย:
README.md- เนื้อหาหลักของบทเรียนพร้อมทฤษฎีและตัวอย่างnotebook.ipynb- แบบฝึกหัด Jupyter notebookassignment.ipynbหรือassignment.md- การมอบหมายงานเพื่อฝึกฝน- โฟลเดอร์
solution/- โน้ตบุ๊กและโค้ดคำตอบ - โฟลเดอร์
images/- วัสดุภาพประกอบ
การพัฒนาแอปพลิเคชันแบบทดสอบ
- แอปพลิเคชัน Vue.js 2 พร้อม hot-reload ระหว่างการพัฒนา
- แบบทดสอบจัดเก็บใน
quiz-app/src/assets/translations/ - แต่ละภาษามีโฟลเดอร์การแปลของตัวเอง (en, fr, es, ฯลฯ)
- หมายเลขแบบทดสอบเริ่มต้นที่ 0 และไปจนถึง 39 (รวม 40 แบบทดสอบ)
การเพิ่มการแปลภาษา
- การแปลอยู่ในโฟลเดอร์
translations/ที่รากของที่เก็บ - แต่ละภาษามีโครงสร้างบทเรียนที่สมบูรณ์เหมือนภาษาอังกฤษ
- การแปลอัตโนมัติผ่าน GitHub Actions (co-op-translator.yml)
คำแนะนำการทดสอบ
การทดสอบแอปพลิเคชันแบบทดสอบ
cd quiz-app
# Run lint checks
npm run lint
# Test build process
npm run build
# Manual testing: Start dev server and verify quiz functionality
npm run serve
การทดสอบโน้ตบุ๊ก
- ไม่มีกรอบการทดสอบอัตโนมัติสำหรับโน้ตบุ๊ก
- การตรวจสอบด้วยตนเอง: รันเซลล์ทั้งหมดตามลำดับเพื่อให้แน่ใจว่าไม่มีข้อผิดพลาด
- ตรวจสอบว่าไฟล์ข้อมูลสามารถเข้าถึงได้และผลลัพธ์ถูกสร้างขึ้นอย่างถูกต้อง
- ตรวจสอบว่าการแสดงผลภาพทำงานได้อย่างเหมาะสม
การทดสอบเอกสาร
# Verify Docsify renders correctly
docsify serve
# Check for broken links manually by navigating through content
# Verify all lesson links work in the rendered documentation
การตรวจสอบคุณภาพโค้ด
# Vue.js projects (quiz-app and visualization projects)
cd quiz-app # or visualization project folder
npm run lint
# Python notebooks - manual verification recommended
# Ensure imports work and cells execute without errors
แนวทางการเขียนโค้ด
Python (Jupyter Notebooks)
- ปฏิบัติตามแนวทางสไตล์ PEP 8 สำหรับโค้ด Python
- ใช้ชื่อตัวแปรที่ชัดเจนซึ่งอธิบายข้อมูลที่กำลังวิเคราะห์
- รวมเซลล์ markdown พร้อมคำอธิบายก่อนเซลล์โค้ด
- ให้เซลล์โค้ดมุ่งเน้นไปที่แนวคิดหรือการดำเนินการเดียว
- ใช้ pandas สำหรับการจัดการข้อมูล, matplotlib สำหรับการแสดงผล
- รูปแบบการนำเข้าทั่วไป:
import pandas as pd import numpy as np import matplotlib.pyplot as plt
JavaScript/Vue.js
- ปฏิบัติตามแนวทางสไตล์ Vue.js 2 และแนวปฏิบัติที่ดีที่สุด
- การกำหนดค่า ESLint ใน
quiz-app/package.json - ใช้ส่วนประกอบ Vue แบบไฟล์เดียว (.vue files)
- รักษาสถาปัตยกรรมที่เน้นส่วนประกอบ
- รัน
npm run lintก่อนการ commit การเปลี่ยนแปลง
เอกสาร Markdown
- ใช้ลำดับชั้นหัวข้อที่ชัดเจน (# ## ### ฯลฯ)
- รวมบล็อกโค้ดพร้อมตัวระบุภาษา
- เพิ่มข้อความ alt สำหรับภาพ
- ลิงก์ไปยังบทเรียนและแหล่งข้อมูลที่เกี่ยวข้อง
- รักษาความยาวบรรทัดให้อ่านง่าย
การจัดระเบียบไฟล์
- เนื้อหาบทเรียนในโฟลเดอร์ที่มีหมายเลข (01-defining-data-science ฯลฯ)
- คำตอบในโฟลเดอร์ย่อย
solution/โดยเฉพาะ - การแปลโครงสร้างเหมือนภาษาอังกฤษในโฟลเดอร์
translations/ - เก็บไฟล์ข้อมูลใน
data/หรือโฟลเดอร์เฉพาะบทเรียน
การสร้างและการปรับใช้
การปรับใช้แอปพลิเคชันแบบทดสอบ
cd quiz-app
# Build production version
npm run build
# Output is in dist/ folder
# Deploy dist/ folder to static hosting (Azure Static Web Apps, Netlify, etc.)
การปรับใช้ Azure Static Web Apps
แอป quiz-app สามารถปรับใช้กับ Azure Static Web Apps:
- สร้างทรัพยากร Azure Static Web App
- เชื่อมต่อกับที่เก็บ GitHub
- กำหนดค่าการตั้งค่าการสร้าง:
- ตำแหน่งแอป:
quiz-app - ตำแหน่งผลลัพธ์:
dist
- ตำแหน่งแอป:
- GitHub Actions workflow จะปรับใช้อัตโนมัติเมื่อมีการ push
เว็บไซต์เอกสาร
# Build PDF from Docsify (optional)
npm run convert
# Docsify documentation is served directly from markdown files
# No build step required for deployment
# Deploy repository to static hosting with Docsify
GitHub Codespaces
- ที่เก็บรวมการกำหนดค่า dev container
- Codespaces ตั้งค่าสภาพแวดล้อม Python และ Node.js โดยอัตโนมัติ
- เปิดที่เก็บใน Codespace ผ่าน UI ของ GitHub
- การติดตั้งการพึ่งพาทั้งหมดจะดำเนินการโดยอัตโนมัติ
แนวทางการส่ง Pull Request
ก่อนการส่ง
# For Vue.js changes in quiz-app
cd quiz-app
npm run lint
npm run build
# Test changes locally
npm run serve
รูปแบบชื่อ PR
- ใช้ชื่อที่ชัดเจนและอธิบายได้
- รูปแบบ:
[Component] คำอธิบายสั้นๆ - ตัวอย่าง:
[Lesson 7] แก้ไขข้อผิดพลาดการนำเข้า Python notebook[Quiz App] เพิ่มการแปลภาษาเยอรมัน[Docs] อัปเดต README พร้อมข้อกำหนดเบื้องต้นใหม่
การตรวจสอบที่จำเป็น
- ตรวจสอบให้แน่ใจว่าโค้ดทั้งหมดทำงานได้โดยไม่มีข้อผิดพลาด
- ยืนยันว่าโน้ตบุ๊กทำงานได้สมบูรณ์
- ยืนยันว่าแอป Vue.js สร้างสำเร็จ
- ตรวจสอบว่าเอกสารลิงก์ทำงานได้
- ทดสอบแอปพลิเคชันแบบทดสอบหากมีการแก้ไข
- ยืนยันว่าโครงสร้างการแปลยังคงสอดคล้องกัน
แนวทางการมีส่วนร่วม
- ปฏิบัติตามสไตล์และรูปแบบโค้ดที่มีอยู่
- เพิ่มความคิดเห็นอธิบายสำหรับตรรกะที่ซับซ้อน
- อัปเดตเอกสารที่เกี่ยวข้อง
- ทดสอบการเปลี่ยนแปลงในโมดูลบทเรียนต่างๆ หากเกี่ยวข้อง
- อ่านไฟล์ CONTRIBUTING.md
หมายเหตุเพิ่มเติม
ไลบรารีที่ใช้บ่อย
- pandas: การจัดการและวิเคราะห์ข้อมูล
- numpy: การคำนวณเชิงตัวเลข
- matplotlib: การแสดงผลและการพล็อตข้อมูล
- seaborn: การแสดงผลข้อมูลเชิงสถิติ (บางบทเรียน)
- scikit-learn: การเรียนรู้ของเครื่อง (บทเรียนขั้นสูง)
การทำงานกับไฟล์ข้อมูล
- ไฟล์ข้อมูลอยู่ในโฟลเดอร์
data/หรือไดเรกทอรีเฉพาะบทเรียน - โน้ตบุ๊กส่วนใหญ่คาดหวังไฟล์ข้อมูลในเส้นทางสัมพัทธ์
- ไฟล์ CSV เป็นรูปแบบข้อมูลหลัก
- บางบทเรียนใช้ JSON สำหรับตัวอย่างข้อมูลที่ไม่ใช่เชิงสัมพันธ์
การสนับสนุนหลายภาษา
- การแปลมากกว่า 40 ภาษา ผ่าน GitHub Actions อัตโนมัติ
- เวิร์กโฟลว์การแปลใน
.github/workflows/co-op-translator.yml - การแปลในโฟลเดอร์
translations/พร้อมรหัสภาษา - การแปลแบบทดสอบใน
quiz-app/src/assets/translations/
ตัวเลือกสภาพแวดล้อมการพัฒนา
- การพัฒนาในเครื่อง: ติดตั้ง Python, Jupyter, Node.js ในเครื่อง
- GitHub Codespaces: สภาพแวดล้อมการพัฒนาแบบคลาวด์ทันที
- VS Code Dev Containers: การพัฒนาบนคอนเทนเนอร์ในเครื่อง
- Binder: เปิดโน้ตบุ๊กในคลาวด์ (หากกำหนดค่าไว้)
แนวทางเนื้อหาบทเรียน
- แต่ละบทเรียนเป็นแบบสแตนด์อโลนแต่สร้างขึ้นจากแนวคิดก่อนหน้า
- แบบทดสอบก่อนบทเรียนทดสอบความรู้ก่อนหน้า
- แบบทดสอบหลังบทเรียนเสริมสร้างการเรียนรู้
- การมอบหมายงานให้โอกาสฝึกฝน
- Sketchnotes ให้สรุปภาพรวม
การแก้ไขปัญหาทั่วไป
ปัญหา Jupyter Kernel:
# Ensure correct kernel is installed
python -m ipykernel install --user --name=datascience
ข้อผิดพลาด npm Install:
# Clear npm cache and retry
npm cache clean --force
rm -rf node_modules package-lock.json
npm install
ข้อผิดพลาดการนำเข้าในโน้ตบุ๊ก:
- ตรวจสอบให้แน่ใจว่าติดตั้งไลบรารีที่จำเป็นทั้งหมด
- ตรวจสอบความเข้ากันได้ของเวอร์ชัน Python (แนะนำ Python 3.7+)
- ตรวจสอบให้แน่ใจว่าสภาพแวดล้อมเสมือนถูกเปิดใช้งาน
Docsify ไม่โหลด:
- ตรวจสอบว่าคุณกำลังให้บริการจากโฟลเดอร์รากของที่เก็บ
- ตรวจสอบว่า
index.htmlมีอยู่ - ตรวจสอบการเข้าถึงเครือข่ายที่เหมาะสม (พอร์ต 3000)
ข้อควรพิจารณาด้านประสิทธิภาพ
- ชุดข้อมูลขนาดใหญ่อาจใช้เวลาโหลดในโน้ตบุ๊ก
- การแสดงผลภาพอาจช้าสำหรับพล็อตที่ซับซ้อน
- เซิร์ฟเวอร์ dev ของ Vue.js เปิดใช้งาน hot-reload สำหรับการทำซ้ำอย่างรวดเร็ว
- การสร้างสำหรับการใช้งานจริงได้รับการปรับให้เหมาะสมและย่อขนาด
หมายเหตุด้านความปลอดภัย
- ห้าม commit ข้อมูลหรือข้อมูลประจำตัวที่ละเอียดอ่อน
- ใช้ตัวแปรสภาพแวดล้อมสำหรับคีย์ API ในบทเรียนคลาวด์
- บทเรียนที่เกี่ยวข้องกับ Azure อาจต้องใช้ข้อมูลประจำตัวบัญชี Azure
- อัปเดตการพึ่งพาเพื่อรับแพตช์ความปลอดภัย
การมีส่วนร่วมในการแปล
- การแปลอัตโนมัติจัดการผ่าน GitHub Actions
- ยินดีต้อนรับการแก้ไขด้วยตนเองเพื่อความถูกต้องของการแปล
- ปฏิบัติตามโครงสร้างโฟลเดอร์การแปลที่มีอยู่
- อัปเดตลิงก์แบบทดสอบให้รวมพารามิเตอร์ภาษา:
?loc=fr - ทดสอบบทเรียนที่แปลเพื่อให้แน่ใจว่าการแสดงผลถูกต้อง
แหล่งข้อมูลที่เกี่ยวข้อง
- หลักสูตรหลัก: https://aka.ms/datascience-beginners
- Microsoft Learn: https://docs.microsoft.com/learn/
- Student Hub: https://docs.microsoft.com/learn/student-hub
- ฟอรัมสนทนา: https://github.com/microsoft/Data-Science-For-Beginners/discussions
- หลักสูตรอื่นๆ ของ Microsoft: ML for Beginners, AI for Beginners, Web Dev for Beginners
การดูแลรักษาโครงการ
- อัปเดตเป็นประจำเพื่อให้เนื้อหาทันสมัย
- ยินดีต้อนรับการมีส่วนร่วมจากชุมชน
- ติดตามปัญหาบน GitHub
- PRs ตรวจสอบโดยผู้ดูแลหลักสูตร
- การตรวจสอบและอัปเดตเนื้อหารายเดือน
ข้อจำกัดความรับผิดชอบ:
เอกสารนี้ได้รับการแปลโดยใช้บริการแปลภาษา AI Co-op Translator แม้ว่าเราจะพยายามให้การแปลมีความถูกต้องมากที่สุด แต่โปรดทราบว่าการแปลโดยอัตโนมัติอาจมีข้อผิดพลาดหรือความไม่ถูกต้อง เอกสารต้นฉบับในภาษาดั้งเดิมควรถือเป็นแหล่งข้อมูลที่เชื่อถือได้ สำหรับข้อมูลที่สำคัญ ขอแนะนำให้ใช้บริการแปลภาษามนุษย์ที่มีความเชี่ยวชาญ เราไม่รับผิดชอบต่อความเข้าใจผิดหรือการตีความผิดที่เกิดจากการใช้การแปลนี้