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
12 KiB
336 lines
12 KiB
# AGENTS.md
|
|
|
|
## Przegląd projektu
|
|
|
|
To jest **Machine Learning dla początkujących**, kompleksowy 12-tygodniowy, 26-lekcyjny kurs obejmujący klasyczne koncepcje uczenia maszynowego z użyciem Pythona (głównie Scikit-learn) i R. Repozytorium zostało zaprojektowane jako zasób do samodzielnej nauki, zawierający projekty praktyczne, quizy i zadania. Każda lekcja bada koncepcje ML na podstawie danych z różnych kultur i regionów świata.
|
|
|
|
Kluczowe elementy:
|
|
- **Treści edukacyjne**: 26 lekcji obejmujących wprowadzenie do ML, regresję, klasyfikację, klasteryzację, NLP, szereg czasowy i uczenie przez wzmacnianie
|
|
- **Aplikacja quizowa**: Aplikacja quizowa oparta na Vue.js z ocenami przed i po lekcji
|
|
- **Wsparcie wielojęzyczne**: Automatyczne tłumaczenia na ponad 40 języków za pomocą GitHub Actions
|
|
- **Wsparcie dla dwóch języków**: Lekcje dostępne zarówno w Pythonie (notatniki Jupyter), jak i R (pliki R Markdown)
|
|
- **Nauka oparta na projektach**: Każdy temat zawiera praktyczne projekty i zadania
|
|
|
|
## Struktura repozytorium
|
|
|
|
```
|
|
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
|
|
```
|
|
|
|
Każdy folder lekcji zazwyczaj zawiera:
|
|
- `README.md` - Główna treść lekcji
|
|
- `notebook.ipynb` - Notatnik Jupyter w Pythonie
|
|
- `solution/` - Kod rozwiązania (wersje w Pythonie i R)
|
|
- `assignment.md` - Ćwiczenia praktyczne
|
|
- `images/` - Zasoby wizualne
|
|
|
|
## Polecenia konfiguracji
|
|
|
|
### Dla lekcji w Pythonie
|
|
|
|
Większość lekcji korzysta z notatników Jupyter. Zainstaluj wymagane zależności:
|
|
|
|
```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
|
|
```
|
|
|
|
### Dla lekcji w R
|
|
|
|
Lekcje w R znajdują się w folderach `solution/R/` jako pliki `.rmd` lub `.ipynb`:
|
|
|
|
```bash
|
|
# Install R and required packages
|
|
# In R console:
|
|
install.packages(c("tidyverse", "tidymodels", "caret"))
|
|
```
|
|
|
|
### Dla aplikacji quizowej
|
|
|
|
Aplikacja quizowa to aplikacja Vue.js znajdująca się w katalogu `quiz-app/`:
|
|
|
|
```bash
|
|
cd quiz-app
|
|
npm install
|
|
```
|
|
|
|
### Dla strony dokumentacji
|
|
|
|
Aby uruchomić dokumentację lokalnie:
|
|
|
|
```bash
|
|
# Install Docsify
|
|
npm install -g docsify-cli
|
|
|
|
# Serve from repository root
|
|
docsify serve
|
|
|
|
# Access at http://localhost:3000
|
|
```
|
|
|
|
## Przepływ pracy deweloperskiej
|
|
|
|
### Praca z notatnikami lekcji
|
|
|
|
1. Przejdź do katalogu lekcji (np. `2-Regression/1-Tools/`)
|
|
2. Otwórz notatnik Jupyter:
|
|
```bash
|
|
jupyter notebook notebook.ipynb
|
|
```
|
|
3. Pracuj nad treścią lekcji i ćwiczeniami
|
|
4. Sprawdź rozwiązania w folderze `solution/`, jeśli to konieczne
|
|
|
|
### Rozwój w Pythonie
|
|
|
|
- Lekcje korzystają ze standardowych bibliotek do analizy danych w Pythonie
|
|
- Notatniki Jupyter do interaktywnej nauki
|
|
- Kod rozwiązania dostępny w folderze `solution/` każdej lekcji
|
|
|
|
### Rozwój w R
|
|
|
|
- Lekcje w R są w formacie `.rmd` (R Markdown)
|
|
- Rozwiązania znajdują się w podkatalogach `solution/R/`
|
|
- Użyj RStudio lub Jupyter z jądrem R, aby uruchomić notatniki w R
|
|
|
|
### Rozwój aplikacji quizowej
|
|
|
|
```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
|
|
```
|
|
|
|
## Instrukcje testowania
|
|
|
|
### Testowanie aplikacji quizowej
|
|
|
|
```bash
|
|
cd quiz-app
|
|
|
|
# Lint code
|
|
npm run lint
|
|
|
|
# Build to verify no errors
|
|
npm run build
|
|
```
|
|
|
|
**Uwaga**: To repozytorium jest głównie zasobem edukacyjnym. Nie ma zautomatyzowanych testów dla treści lekcji. Walidacja odbywa się poprzez:
|
|
- Wykonywanie ćwiczeń lekcyjnych
|
|
- Pomyślne uruchamianie komórek notatnika
|
|
- Porównywanie wyników z oczekiwanymi rezultatami w rozwiązaniach
|
|
|
|
## Wytyczne dotyczące stylu kodu
|
|
|
|
### Kod w Pythonie
|
|
- Przestrzegaj wytycznych stylu PEP 8
|
|
- Używaj jasnych, opisowych nazw zmiennych
|
|
- Dodawaj komentarze do skomplikowanych operacji
|
|
- Notatniki Jupyter powinny zawierać komórki markdown wyjaśniające koncepcje
|
|
|
|
### JavaScript/Vue.js (Aplikacja quizowa)
|
|
- Przestrzegaj wytycznych stylu Vue.js
|
|
- Konfiguracja ESLint w `quiz-app/package.json`
|
|
- Uruchom `npm run lint`, aby sprawdzić i automatycznie poprawić problemy
|
|
|
|
### Dokumentacja
|
|
- Pliki markdown powinny być jasne i dobrze zorganizowane
|
|
- Dodawaj przykłady kodu w blokach kodu
|
|
- Używaj względnych linków dla odwołań wewnętrznych
|
|
- Przestrzegaj istniejących konwencji formatowania
|
|
|
|
## Budowa i wdrożenie
|
|
|
|
### Wdrożenie aplikacji quizowej
|
|
|
|
Aplikacja quizowa może być wdrożona na Azure Static Web Apps:
|
|
|
|
1. **Wymagania wstępne**:
|
|
- Konto Azure
|
|
- Repozytorium GitHub (już zforkowane)
|
|
|
|
2. **Wdrożenie na Azure**:
|
|
- Utwórz zasób Azure Static Web App
|
|
- Połącz z repozytorium GitHub
|
|
- Ustaw lokalizację aplikacji: `/quiz-app`
|
|
- Ustaw lokalizację wynikową: `dist`
|
|
- Azure automatycznie tworzy workflow GitHub Actions
|
|
|
|
3. **Workflow GitHub Actions**:
|
|
- Plik workflow utworzony w `.github/workflows/azure-static-web-apps-*.yml`
|
|
- Automatycznie buduje i wdraża przy pushu do głównej gałęzi
|
|
|
|
### Dokumentacja PDF
|
|
|
|
Generowanie PDF z dokumentacji:
|
|
|
|
```bash
|
|
npm install
|
|
npm run convert
|
|
```
|
|
|
|
## Przepływ pracy tłumaczeń
|
|
|
|
**Ważne**: Tłumaczenia są automatyzowane za pomocą GitHub Actions z użyciem Co-op Translator.
|
|
|
|
- Tłumaczenia są generowane automatycznie po wprowadzeniu zmian do gałęzi `main`
|
|
- **NIE tłumacz treści ręcznie** - system zajmuje się tym
|
|
- Workflow zdefiniowany w `.github/workflows/co-op-translator.yml`
|
|
- Wykorzystuje usługi Azure AI/OpenAI do tłumaczeń
|
|
- Obsługuje ponad 40 języków
|
|
|
|
## Wytyczne dotyczące wkładu
|
|
|
|
### Dla współtwórców treści
|
|
|
|
1. **Zforkuj repozytorium** i utwórz gałąź funkcji
|
|
2. **Wprowadź zmiany w treści lekcji**, jeśli dodajesz/aktualizujesz lekcje
|
|
3. **Nie modyfikuj plików tłumaczeń** - są generowane automatycznie
|
|
4. **Przetestuj swój kod** - upewnij się, że wszystkie komórki notatnika działają poprawnie
|
|
5. **Zweryfikuj linki i obrazy**, czy działają poprawnie
|
|
6. **Złóż pull request** z jasnym opisem
|
|
|
|
### Wytyczne dotyczące pull requestów
|
|
|
|
- **Format tytułu**: `[Sekcja] Krótki opis zmian`
|
|
- Przykład: `[Regression] Popraw literówkę w lekcji 5`
|
|
- Przykład: `[Quiz-App] Aktualizacja zależności`
|
|
- **Przed złożeniem**:
|
|
- Upewnij się, że wszystkie komórki notatnika wykonują się bez błędów
|
|
- Uruchom `npm run lint`, jeśli modyfikujesz quiz-app
|
|
- Zweryfikuj formatowanie markdown
|
|
- Przetestuj nowe przykłady kodu
|
|
- **PR musi zawierać**:
|
|
- Opis zmian
|
|
- Powód zmian
|
|
- Zrzuty ekranu, jeśli zmiany dotyczą UI
|
|
- **Kodeks postępowania**: Przestrzegaj [Kodeksu postępowania Microsoft Open Source](CODE_OF_CONDUCT.md)
|
|
- **CLA**: Musisz podpisać Umowę Licencyjną Współtwórcy
|
|
|
|
## Struktura lekcji
|
|
|
|
Każda lekcja ma spójny schemat:
|
|
|
|
1. **Quiz przed wykładem** - Sprawdzenie wiedzy początkowej
|
|
2. **Treść lekcji** - Instrukcje i wyjaśnienia
|
|
3. **Demonstracje kodu** - Przykłady praktyczne w notatnikach
|
|
4. **Sprawdzanie wiedzy** - Weryfikacja zrozumienia na bieżąco
|
|
5. **Wyzwanie** - Samodzielne zastosowanie koncepcji
|
|
6. **Zadanie** - Rozszerzona praktyka
|
|
7. **Quiz po wykładzie** - Ocena wyników nauki
|
|
|
|
## Odniesienia do poleceń
|
|
|
|
```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
|
|
```
|
|
|
|
## Dodatkowe zasoby
|
|
|
|
- **Kolekcja Microsoft Learn**: [Moduły ML dla początkujących](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum)
|
|
- **Aplikacja quizowa**: [Quizy online](https://ff-quizzes.netlify.app/en/ml/)
|
|
- **Forum dyskusyjne**: [Dyskusje na GitHub](https://github.com/microsoft/ML-For-Beginners/discussions)
|
|
- **Przewodniki wideo**: [Lista odtwarzania na YouTube](https://aka.ms/ml-beginners-videos)
|
|
|
|
## Kluczowe technologie
|
|
|
|
- **Python**: Główny język dla lekcji ML (Scikit-learn, Pandas, NumPy, Matplotlib)
|
|
- **R**: Alternatywna implementacja z użyciem tidyverse, tidymodels, caret
|
|
- **Jupyter**: Interaktywne notatniki dla lekcji w Pythonie
|
|
- **R Markdown**: Dokumenty dla lekcji w R
|
|
- **Vue.js 3**: Framework aplikacji quizowej
|
|
- **Flask**: Framework aplikacji webowych do wdrażania modeli ML
|
|
- **Docsify**: Generator strony dokumentacji
|
|
- **GitHub Actions**: CI/CD i automatyczne tłumaczenia
|
|
|
|
## Rozważania dotyczące bezpieczeństwa
|
|
|
|
- **Brak tajnych danych w kodzie**: Nigdy nie commituj kluczy API ani danych uwierzytelniających
|
|
- **Zależności**: Aktualizuj pakiety npm i pip
|
|
- **Dane wejściowe użytkownika**: Przykłady aplikacji webowych Flask zawierają podstawową walidację danych wejściowych
|
|
- **Dane wrażliwe**: Przykładowe zestawy danych są publiczne i niewrażliwe
|
|
|
|
## Rozwiązywanie problemów
|
|
|
|
### Notatniki Jupyter
|
|
|
|
- **Problemy z jądrem**: Zrestartuj jądro, jeśli komórki się zawieszają: Kernel → Restart
|
|
- **Błędy importu**: Upewnij się, że wszystkie wymagane pakiety są zainstalowane za pomocą pip
|
|
- **Problemy ze ścieżką**: Uruchamiaj notatniki z ich katalogu zawierającego
|
|
|
|
### Aplikacja quizowa
|
|
|
|
- **npm install nie działa**: Wyczyść cache npm: `npm cache clean --force`
|
|
- **Konflikty portów**: Zmień port za pomocą: `npm run serve -- --port 8081`
|
|
- **Błędy budowy**: Usuń `node_modules` i zainstaluj ponownie: `rm -rf node_modules && npm install`
|
|
|
|
### Lekcje w R
|
|
|
|
- **Brak pakietu**: Zainstaluj za pomocą: `install.packages("package-name")`
|
|
- **Renderowanie RMarkdown**: Upewnij się, że pakiet rmarkdown jest zainstalowany
|
|
- **Problemy z jądrem**: Może być konieczne zainstalowanie IRkernel dla Jupyter
|
|
|
|
## Uwagi dotyczące projektu
|
|
|
|
- To jest głównie **program nauczania**, a nie kod produkcyjny
|
|
- Skupienie na **zrozumieniu koncepcji ML** poprzez praktykę
|
|
- Przykłady kodu priorytetowo traktują **jasność nad optymalizacją**
|
|
- Większość lekcji jest **samodzielna** i może być ukończona niezależnie
|
|
- **Rozwiązania są dostępne**, ale uczniowie powinni najpierw spróbować ćwiczeń
|
|
- Repozytorium używa **Docsify** do dokumentacji webowej bez kroku budowy
|
|
- **Sketchnotes** zapewniają wizualne podsumowania koncepcji
|
|
- **Wsparcie wielojęzyczne** sprawia, że treści są dostępne globalnie
|
|
|
|
---
|
|
|
|
**Zastrzeżenie**:
|
|
Ten dokument został przetłumaczony za pomocą usługi tłumaczenia AI [Co-op Translator](https://github.com/Azure/co-op-translator). Chociaż dokładamy wszelkich starań, aby tłumaczenie było precyzyjne, prosimy pamiętać, że automatyczne tłumaczenia mogą zawierać błędy lub nieścisłości. Oryginalny dokument w jego języku źródłowym powinien być uznawany za autorytatywne źródło. W przypadku informacji o kluczowym znaczeniu zaleca się skorzystanie z profesjonalnego tłumaczenia przez człowieka. Nie ponosimy odpowiedzialności za jakiekolwiek nieporozumienia lub błędne interpretacje wynikające z użycia tego tłumaczenia. |