Term project¶
A Python project in teams of two: a classification task on a dataset of your choice, delivered as one well-commented Jupyter notebook, an opponent review of another team's project, and a mandatory presentation with a defence. It is worth 20 points (project) + 5 (opponent review) + 5 (presentation and defence).
AI component
For 4IZ582 / 4IZ583 the project must contain an AI component — one of the five routes below. For 4IZ566 / 4IZ565 the same routes are the optional extension.
Milestones — winter 2026/27¶
| When | Milestone |
|---|---|
| 23.09. (week 1) | Teams form in seminar 1; start choosing a dataset |
| Sun 04.10. (week 2) | Team and dataset registered in INSIS |
| 14.10. – 22.11. (weeks 4–9) | Analysis |
| Sun 22.11. (end of week 9) | Notebook submitted in INSIS — the full pipeline including the AI component |
| Sun 29.11. (week 10) | Opponent review submitted (PDF) |
| 09.12. and 16.12. | Presentations and defences in the seminar slots; allocation announced on 02.12. |
Choosing a dataset¶
The task must be classification — the target variable is nominal. A numeric target is acceptable only if its values are a small number of categories. Aim for a few thousand rows and a handful of features; more is fine if the notebook still runs in five minutes.
Generic sources
- UCI Machine Learning Repository
- OpenML
- Kaggle datasets
- Hugging Face datasets — text datasets for routes A–C
- UN data · data.gov · OpenEI
- Portál otevřených dat ČR · data.slovensko.sk
Czech open data and current problems
- Elections: volby.gov.cz — open data — candidate lists across years and election types (a matching / deduplication problem before any classification)
- Registry of contracts: smlouvy.gov.cz — open data, with state budgets at monitor.statnipokladna.gov.cz and Hlídač státu
- Public tenders: vvz.nipez.cz
- Companies and insolvency: Insolvenční rejstřík, Obchodní rejstřík, ARES, Centrální registr oznámení
- Linked open data: Wikidata and its query service
- Text: Twitter fake news, Russian troll tweets; knowledge graph: KG-COVID-19
You may propose any other dataset. Register it in INSIS by 4 October.
What every project must contain¶
- Exploratory analysis — shape and types, missing values, the class balance of the target, at least two plots that say something (seminar 1).
- Preprocessing in pandas — any two of: remove rows by subsetting · derive new columns
· aggregate with
groupby· treat missing values · join two tables (seminar 1). Encoding and scaling go inside aPipeline/ColumnTransformer, not before the split (seminar 2). - Modelling — a held-out test set and stratified cross-validation on the training
part; at least two algorithm families (for example logistic regression and a random
forest or gradient boosting). Any
scikit-learnclassifier is fine. - Hyperparameter tuning —
GridSearchCV/RandomizedSearchCVwithrefit, or a documented table of configurations you tried. Report the nested or held-out estimate, not the search's own best score (seminar 2). - Evaluation — accuracy plus one threshold-independent metric (ROC AUC or average precision); the confusion matrix at the threshold you chose and why; the ROC curve for a binary task; the metric justified by the class balance; the test set touched once.
- No leakage — preprocessing or feature selection fitted outside the pipeline, target leakage (a feature that is only known after the outcome), temporal leakage, duplicated or grouped samples across the split. Seminar 2 shows each of these; the Princeton reproducibility checklist is the reference.
AI component¶
Mandatory for 4IZ582 / 4IZ583, optional for 4IZ566 / 4IZ565. Choose one:
| Route | What you build | Taught in |
|---|---|---|
| A — LLM-generated features | A structured-output schema over a text column (or the llm-feature-gen package — see the extra notebook of seminar 3), the features joined into the pipeline; the model must never see the label; report with and without them |
seminar 3 |
| B — embedding features | Embeddings of a text column as classifier input, against a TF-IDF baseline | seminar 3 |
| C — LLM as a zero-/few-shot classifier | The model labels the test split; confusion matrix against your tuned model, and the cost per 1 000 rows | seminars 2–3 |
| D — RAG component | Retrieval-augmented question answering over the documents of your dataset's domain, or retrieval-augmented few-shot classification; at least 10 labelled questions, hit@k and MRR reported | seminar 4 |
| E — image data, CNN / transfer learning | A baseline (logistic regression on pretrained embeddings or downscaled pixels) against a fine-tuned model, same evaluation protocol; trained weights or cached embeddings shipped. The ÚTIA seminars on 11.11. and 18.11. come before the deadline, transfer learning (02.12.) after it — plan accordingly | ÚTIA block |
Rules for all routes: use the school endpoints, keys in environment variables, never in the notebook; ship the cached model outputs (CSV) so that the notebook re-runs offline in under five minutes; say what the component cost in requests and time.
Submission¶
The notebook is the report — there is no separate document. Upload one .zip (not .rar)
to INSIS with
- the Jupyter notebook (
.ipynb) with your analysis, commented so that a reader can follow and replicate it: explain every choice in text cells (parameters, removed or added features, the metric), and state who did what and what was done with AI tools (see Assessment); - its HTML export (File → Save and Export Notebook As → HTML);
- the dataset as
.csv— or a download link if it does not fit — plus any cached model outputs the AI component needs to re-run offline.
The notebook must pass Restart Kernel and Run All Cells without errors in roughly five
minutes (shrink the search space if tuning takes longer), use relative paths only
(data/file.csv, never C:\...), and justify every package beyond the standard stack with a
comment and its install command at the top.
Opponent review¶
One PDF per team, on another team's notebook, answering:
- Did the authors select suitable modelling algorithms?
- Was hyperparameter tuning performed where appropriate?
- Are the results replicable — does the notebook describe every step in enough detail?
- Were proper evaluation metrics selected? Are the results correctly interpreted?
- Is the AI component (or extension) justified and evaluated honestly?
- Are all important steps explained and justified? Is the writing clear and concise?
Presentation and defence¶
The presentation is mandatory for every team member — a term project that has not been presented and defended is not complete, and the points for it are not awarded.
Slides are recommended. Up to 8 minutes (about sixty teams share six 90-minute blocks), followed by questions to individual team members: the dataset · preprocessing · modelling · the AI component · lessons learned · response to the review.
Every student is asked a verification question on the project during the presentation. Its purpose is to verify that the student actually did the work — it targets the code, the data or a decision in the notebook, and it is answered individually, without the teammate. The answer is the individual part of the defence points. Instructions given in class take priority.
How the 20 project points are awarded¶
Proposed rubric — may still be adjusted before the semester
| Part | Points |
|---|---|
| Data and exploratory analysis | 3 |
| Preprocessing | 3 |
| Modelling and tuning | 4 |
| Evaluation and reproducibility | 4 |
| AI component (4IZ582/583) or extension (4IZ566/565) | 6 |
Plus 5 points for the opponent review and 5 for the presentation and defence, where half of the defence points depend on each member's answer to their verification question.