Skip to content
Bayanii
Lesson 6

Reading your dataset report

The moment you upload a file, around thirty automatic checks inspect it — before a second of training is spent. This lesson decodes the report they produce: the three severity levels, and what each finding actually asks of you.

What happens when you upload

Bad data wastes training time and produces models that lie. So Bayanii profiles every column — types, gaps, ranges, duplicates — and runs its checks the moment a file arrives. Anything worth your attention becomes a finding in the Data Checks panel, each tagged with one of three severities.

The three severities

Blocker — must be fixed before training

Training would crash or the result would be meaningless. Some blockers (data-quality ones like leakage) can be explicitly waived once you have read them; feasibility blockers — too few rows, out-of-memory risk — cannot.

Warning — needs your decision; we changed nothing

Something only you can judge — is this column really an ID? Is the data really chronological? Bayanii deliberately does not auto-fix these; it flags them and leaves the call to you.

Info — handled automatically or just so you know

Either Bayanii already fixed it (with a "keep my data as-is" opt-out in the panel), or it is pure context. No action needed.

One rule ties it together: anything auto-fixable is Info, anything needing your judgment is a Warning, and anything that must be resolved is a Blocker. Severities adapt to how severe the issue is in YOUR file — the catalog below shows the typical level.

Checks on your target column

Target looks continuous

Warning

You chose classification, but the target holds many distinct numbers — it looks like a quantity to predict.

What to do: Switch the task to regression, or confirm the values really are categories.

Target looks like categories

Warning

You chose regression, but the target has only a handful of repeating values.

What to do: Switch to classification, or confirm the numbers really are quantities.

Single-value target

Blocker

Every row has the same answer — there is nothing to learn.

What to do: Pick a different target column, or fix the export that flattened it.

Class imbalance

Info

One category vastly outnumbers the rest — lesson 3's accuracy trap.

What to do: Auto-handled with balanced class weights; judge the model by balanced accuracy, not plain accuracy.

High-cardinality target

Warning

The target has very many distinct categories, some appearing only once or twice — scores per category become unreliable.

What to do: Group rare categories together, or treat the column as a number if it is one.

Skew

Info

The target is lopsided — a few extreme values dominate the range.

What to do: Context only: expect error metrics to be driven by the large values.

Target leakage

Depends

A feature mirrors the target suspiciously well — often information recorded AFTER the outcome (a refund column "predicting" cancellations).

What to do: Strong cases block training; deselect the flagged column, or waive explicitly if you are sure it is legitimate.

Checks on your feature columns

Missing value

Info

A column is entirely — or almost entirely — empty.

What to do: Auto-dropped; keep it via the opt-out if the emptiness itself is meaningful.

Missingness

Depends

A column has a noticeable share of empty cells.

What to do: Light gaps are auto-filled from the training data; heavy gaps get flagged for your call.

Constant column

Info

Every row holds the same value — zero signal.

What to do: Auto-dropped.

Near-constant column

Warning

Almost every row holds the same value — the rare exceptions might be signal, or just noise.

What to do: Left in place, on purpose: decide whether the rare values are meaningful, and deselect the column if they are not.

ID-like column

Info

A different value in every row — a row number or ID. Pure memorization fuel for a model.

What to do: Auto-dropped.

Identifier-named column

Info

The column is named like an identifier (id, uuid, serial…).

What to do: Auto-dropped by name; opt out if it is real data.

Duplicate columns

Info

Two columns are exact copies of each other.

What to do: One copy is auto-dropped.

Multicollinearity

Info

Two features move together almost perfectly — redundant information.

What to do: Context only; feature selection handles the redundancy.

Many features for the number of rows

Info

More columns than the row count can support — an overfitting risk (lesson 1).

What to do: Feature selection tightens automatically; more rows always help.

Data-quality checks

Duplicate rows

Warning

Exact copies of rows. Copies can land in both the study material and the exam, inflating scores.

What to do: Usually best deduplicated — unless the duplicates are genuinely separate events.

Mixed types

Info

Numbers stored as text — "1,200 SAR", Arabic-Indic digits, currency symbols.

What to do: Auto-cleaned; the same cleaning is applied again at prediction time, so it stays consistent.

Mixed encodings

Warning

A column contains garbled � replacement characters — the file was probably saved with the wrong text encoding.

What to do: Re-export the file as UTF-8 and upload it again; the garbled values cannot be recovered from this copy.

Arabic text

Info

Arabic content detected in the data.

What to do: Context only — handled natively.

Datetime column

Info

A column contains dates.

What to do: Auto-decomposed into learnable parts (year, month, day-of-week…) for regression and classification.

Data may be time-ordered

Warning

Rows look chronological. A random train/test split can leak the future into the exam and flatter the scores.

What to do: If time matters to your question, consider the forecasting task instead — or read the scores with care.

Feasibility checks

Too few rows for CV

Blocker

Not enough rows to run the rotating exams from lesson 1 — any score would be noise.

What to do: Cannot be waived. Collect more rows; a few hundred is a workable floor.

OOM risk

Blocker

The dataset is too large for the training machine's memory — the job would be killed mid-run.

What to do: Cannot be waived. Reduce rows or columns, or split the problem.

Forecasting-specific checks

These run only for the forecasting task, where the time axis itself must be sound (lesson 4).

No usable datetime column

Blocker

Forecasting needs a column that says WHEN each row happened, and none could be parsed.

What to do: Add or fix a date/time column.

No regular frequency

Blocker

The timestamps follow no consistent rhythm (daily? monthly?), so lags are undefined.

What to do: Resample the data to a regular interval first.

Irregular sampling

Warning

Mostly regular, but some intervals are off.

What to do: Check for missing or duplicated periods before trusting the forecast.

Gaps in time series

Warning

Holes in the timeline — a missing March breaks "each row follows the last".

What to do: Fill or acknowledge the gaps; lags spanning a gap mislead the model.

Insufficient history

Depends

Too few time points for the lags and horizon you asked for.

What to do: Blocking when truly infeasible; otherwise shorten the lags/horizon or bring more history.

Non-stationary target

Info

The series trends strongly over time rather than hovering around a level.

What to do: Context only — the lag-based models handle trend; just know far-out forecasts extrapolate it.

Seasonality detected

Info

A repeating cycle (weekly, yearly…) was found.

What to do: Good news — the lag window is sized so the model can use it.

Exog feature has gaps near end of series

Warning

A supporting feature is empty in the most recent rows — exactly where forecasting needs it.

What to do: Fill the recent values, or drop that feature.

Lag-feature count high

Warning

The lag settings generate a very large number of features for the available history.

What to do: Reduce the lag window, or bring more history.

Forecast horizon exceeds cap

Blocker

The requested horizon is beyond what the history can support.

What to do: Ask for fewer steps ahead, or bring more history.

Finding names mirror the real evaluator and severities adapt to your data — the report on your dataset page is always the authority. This lesson is updated by hand when checks change, so it may occasionally lag the code.