12 KiB
AGENTS.md
Projectoverzicht
Dit is Machine Learning voor Beginners, een uitgebreide 12-weekse, 26-lessen curriculum dat klassieke machine learning-concepten behandelt met behulp van Python (voornamelijk met Scikit-learn) en R. De repository is ontworpen als een zelfstudiebron met praktische projecten, quizzen en opdrachten. Elke les verkent ML-concepten aan de hand van real-world data uit verschillende culturen en regio's wereldwijd.
Belangrijke onderdelen:
- Educatieve inhoud: 26 lessen over introductie tot ML, regressie, classificatie, clustering, NLP, tijdreeksen en reinforcement learning
- Quizapplicatie: Vue.js-gebaseerde quizapp met pre- en post-les beoordelingen
- Meertalige ondersteuning: Automatische vertalingen naar meer dan 40 talen via GitHub Actions
- Dubbele taalondersteuning: Lessen beschikbaar in zowel Python (Jupyter-notebooks) als R (R Markdown-bestanden)
- Projectgebaseerd leren: Elk onderwerp bevat praktische projecten en opdrachten
Repositorystructuur
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
Elke lesmap bevat doorgaans:
README.md
- Hoofdinhoud van de lesnotebook.ipynb
- Python Jupyter-notebooksolution/
- Oplossingscode (Python- en R-versies)assignment.md
- Oefenopdrachtenimages/
- Visuele bronnen
Setupcommando's
Voor Python-lessen
De meeste lessen gebruiken Jupyter-notebooks. Installeer de vereiste afhankelijkheden:
# 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
Voor R-lessen
R-lessen bevinden zich in solution/R/
mappen als .rmd
of .ipynb
bestanden:
# Install R and required packages
# In R console:
install.packages(c("tidyverse", "tidymodels", "caret"))
Voor Quizapplicatie
De quizapp bevindt zich in de quiz-app/
map:
cd quiz-app
npm install
Voor documentatiesite
Om de documentatie lokaal te draaien:
# Install Docsify
npm install -g docsify-cli
# Serve from repository root
docsify serve
# Access at http://localhost:3000
Ontwikkelworkflow
Werken met lesnotebooks
- Navigeer naar de lesmap (bijv.
2-Regression/1-Tools/
) - Open de Jupyter-notebook:
jupyter notebook notebook.ipynb
- Werk door de lesinhoud en oefeningen
- Controleer oplossingen in de
solution/
map indien nodig
Python-ontwikkeling
- Lessen gebruiken standaard Python data science-bibliotheken
- Jupyter-notebooks voor interactieve leerervaring
- Oplossingscode beschikbaar in de
solution/
map van elke les
R-ontwikkeling
- R-lessen zijn in
.rmd
formaat (R Markdown) - Oplossingen bevinden zich in
solution/R/
submappen - Gebruik RStudio of Jupyter met R-kernel om R-notebooks uit te voeren
Ontwikkeling van quizapplicatie
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
Testinstructies
Testen van quizapplicatie
cd quiz-app
# Lint code
npm run lint
# Build to verify no errors
npm run build
Let op: Dit is voornamelijk een educatieve curriculumrepository. Er zijn geen geautomatiseerde tests voor lesinhoud. Validatie gebeurt door:
- Het voltooien van lesoefeningen
- Het succesvol uitvoeren van notebookcellen
- Het vergelijken van output met verwachte resultaten in oplossingen
Richtlijnen voor codestijl
Python-code
- Volg PEP 8-stijlrichtlijnen
- Gebruik duidelijke, beschrijvende variabelenamen
- Voeg opmerkingen toe voor complexe operaties
- Jupyter-notebooks moeten markdowncellen bevatten die concepten uitleggen
JavaScript/Vue.js (Quizapp)
- Volgt Vue.js-stijlgids
- ESLint-configuratie in
quiz-app/package.json
- Voer
npm run lint
uit om problemen te controleren en automatisch op te lossen
Documentatie
- Markdown-bestanden moeten duidelijk en goed gestructureerd zijn
- Voeg codevoorbeelden toe in afgebakende codeblokken
- Gebruik relatieve links voor interne verwijzingen
- Volg bestaande opmaakconventies
Build en deployment
Deployment van quizapplicatie
De quizapp kan worden gedeployed naar Azure Static Web Apps:
-
Vereisten:
- Azure-account
- GitHub-repository (al geforkt)
-
Deploy naar Azure:
- Maak een Azure Static Web App-resource
- Verbind met GitHub-repository
- Stel app-locatie in:
/quiz-app
- Stel outputlocatie in:
dist
- Azure maakt automatisch een GitHub Actions-workflow aan
-
GitHub Actions-workflow:
- Workflowbestand aangemaakt in
.github/workflows/azure-static-web-apps-*.yml
- Bouwt en deployt automatisch bij push naar de hoofdbranch
- Workflowbestand aangemaakt in
Documentatie PDF
Genereer PDF vanuit documentatie:
npm install
npm run convert
Vertaalworkflow
Belangrijk: Vertalingen worden automatisch uitgevoerd via GitHub Actions met behulp van Co-op Translator.
- Vertalingen worden automatisch gegenereerd wanneer wijzigingen naar de
main
branch worden gepusht - NIET handmatig vertalen - het systeem regelt dit
- Workflow gedefinieerd in
.github/workflows/co-op-translator.yml
- Gebruikt Azure AI/OpenAI-services voor vertaling
- Ondersteunt meer dan 40 talen
Richtlijnen voor bijdragen
Voor inhoudelijke bijdragers
- Fork de repository en maak een featurebranch
- Breng wijzigingen aan in lesinhoud als je lessen toevoegt of bijwerkt
- Wijzig geen vertaalde bestanden - deze worden automatisch gegenereerd
- Test je code - zorg ervoor dat alle notebookcellen succesvol worden uitgevoerd
- Controleer links en afbeeldingen op correcte werking
- Dien een pull request in met een duidelijke beschrijving
Richtlijnen voor pull requests
- Titelindeling:
[Sectie] Korte beschrijving van wijzigingen
- Voorbeeld:
[Regressie] Typfout in les 5 corrigeren
- Voorbeeld:
[Quiz-App] Dependencies bijwerken
- Voorbeeld:
- Voor het indienen:
- Zorg ervoor dat alle notebookcellen zonder fouten worden uitgevoerd
- Voer
npm run lint
uit als je de quiz-app wijzigt - Controleer markdown-opmaak
- Test eventuele nieuwe codevoorbeelden
- PR moet bevatten:
- Beschrijving van wijzigingen
- Reden voor wijzigingen
- Screenshots bij UI-wijzigingen
- Gedragscode: Volg de Microsoft Open Source Code of Conduct
- CLA: Je moet de Contributor License Agreement ondertekenen
Lesstructuur
Elke les volgt een consistent patroon:
- Pre-lecture quiz - Test basiskennis
- Lesinhoud - Geschreven instructies en uitleg
- Codevoorbeelden - Praktische voorbeelden in notebooks
- Kennischecks - Controleer begrip gedurende de les
- Uitdaging - Pas concepten zelfstandig toe
- Opdracht - Uitgebreide oefening
- Post-lecture quiz - Beoordeel leerresultaten
Referentie voor veelgebruikte commando's
# 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
Aanvullende bronnen
- Microsoft Learn Collection: ML voor Beginners-modules
- Quizapp: Online quizzen
- Discussieforum: GitHub Discussions
- Videowalkthroughs: YouTube Playlist
Belangrijke technologieën
- Python: Primaire taal voor ML-lessen (Scikit-learn, Pandas, NumPy, Matplotlib)
- R: Alternatieve implementatie met tidyverse, tidymodels, caret
- Jupyter: Interactieve notebooks voor Python-lessen
- R Markdown: Documenten voor R-lessen
- Vue.js 3: Framework voor quizapplicatie
- Flask: Webapplicatieframework voor ML-modeldeployment
- Docsify: Generator voor documentatiesites
- GitHub Actions: CI/CD en automatische vertalingen
Overwegingen voor beveiliging
- Geen geheimen in code: Commit nooit API-sleutels of inloggegevens
- Afhankelijkheden: Houd npm- en pip-pakketten up-to-date
- Gebruikersinvoer: Flask-webappvoorbeelden bevatten basisvalidatie van invoer
- Gevoelige data: Voorbeelddatasets zijn openbaar en niet gevoelig
Probleemoplossing
Jupyter-notebooks
- Kernelproblemen: Herstart kernel als cellen vastlopen: Kernel → Restart
- Importfouten: Zorg ervoor dat alle vereiste pakketten zijn geïnstalleerd met pip
- Padproblemen: Voer notebooks uit vanuit hun map
Quizapplicatie
- npm install mislukt: Wis npm-cache:
npm cache clean --force
- Poortconflicten: Wijzig poort met:
npm run serve -- --port 8081
- Buildfouten: Verwijder
node_modules
en installeer opnieuw:rm -rf node_modules && npm install
R-lessen
- Pakket niet gevonden: Installeer met:
install.packages("package-name")
- RMarkdown rendering: Zorg ervoor dat het rmarkdown-pakket is geïnstalleerd
- Kernelproblemen: Mogelijk moet IRkernel worden geïnstalleerd voor Jupyter
Projectspecifieke opmerkingen
- Dit is voornamelijk een leerplan, geen productiecode
- Focus ligt op begrijpen van ML-concepten door praktische oefeningen
- Codevoorbeelden geven prioriteit aan duidelijkheid boven optimalisatie
- De meeste lessen zijn zelfstandig en kunnen onafhankelijk worden voltooid
- Oplossingen beschikbaar, maar deelnemers moeten eerst oefeningen proberen
- Repository gebruikt Docsify voor webdocumentatie zonder buildstap
- Sketchnotes bieden visuele samenvattingen van concepten
- Meertalige ondersteuning maakt inhoud wereldwijd toegankelijk
Disclaimer:
Dit document is vertaald met behulp van de AI-vertalingsservice Co-op Translator. Hoewel we streven naar nauwkeurigheid, dient u zich ervan bewust te zijn dat geautomatiseerde vertalingen fouten of onnauwkeurigheden kunnen bevatten. Het originele document in de oorspronkelijke taal moet worden beschouwd als de gezaghebbende bron. Voor kritieke informatie wordt professionele menselijke vertaling aanbevolen. Wij zijn niet aansprakelijk voor misverstanden of verkeerde interpretaties die voortvloeien uit het gebruik van deze vertaling.