Taylor3691
mining-beyond-boundaries
Jupyter Notebook

End-to-end data preprocessing toolkit for image, tabular & time-series data

Last updated Jun 29, 2026
42
Stars
0
Forks
0
Issues
0
Stars/day
Attention Score
57
Language breakdown
Jupyter Notebook 98.4%
Python 1.6%
Files click to expand
README

Data Mining Preprocessing Project

Đồ án tiền xử lý dữ liệu cho môn Data Mining 2026, thực hiện khảo sát và cài đặt các kỹ thuật tiền xử lý trên 3 nhóm dữ liệu: Image, TableTime Series. Đồ án bao gồm phân tích dữ liệu thô, xử lý giá trị thiếu, phát hiện & xử lý outlier, chuẩn hóa, mã hóa đặc trưng, xử lý mất cân bằng lớp, giảm chiều dữ liệu và nhiều kỹ thuật tiền xử lý khác.


Mục lục

- Phần 1 — Tiền xử lý ảnh - Phần 2 — Tiền xử lý dữ liệu bảng - Phần 3 — Tiền xử lý chuỗi thời gian - 5.1. Clone repo - 5.2. Tạo virtual environment - 5.3. Cài dependencies - 6.1. Download trực tiếp trên web - 6.2. Dùng Kaggle CLI - 9.1. Chạy bằng Notebook - 9.2. Chạy module Python trực tiếp

1. Thông tin nhóm

| STT | MSSV | Họ và tên | |:---:|:--------:|-------------------| | 1 | 23120146 | Hoàng Ngọc | | 2 | 23122025 | Phạm Ngọc Duy | | 3 | 23122032 | Nguyễn Việt Hùng | | 4 | 23120266 | Võ Trần Duy Hoàng | | 5 | 23122021 | Bùi Duy Bảo |


2. Mô tả tập dữ liệu

Dữ liệu Image — Animals-10

| Thuộc tính | Chi tiết | |---|---| | Nguồn | Kaggle — Animals-10 | | Số lượng ảnh | ~26.000 ảnh | | Số lớp | 10 (dog, cat, horse, spider, butterfly, chicken, sheep, cow, squirrel, elephant) | | Định dạng | JPEG / PNG, kích thước không đồng nhất | | Mô tả | Tập ảnh động vật thu thập từ Google Images, được phân thành 10 thư mục theo loài. Tên thư mục gốc bằng tiếng Ý, cần đổi sang tiếng Anh trước khi sử dụng. | | Ứng dụng trong đồ án | Phân tích mất cân bằng lớp, resize & chuẩn hóa ảnh, augmentation, giảm chiều (PCA, t-SNE), kiểm định Kolmogorov-Smirnov |

Dữ liệu Table — Building Permit Applications

| Thuộc tính | Chi tiết | |---|---| | Nguồn | Kaggle — Building Permit Applications Data | | Số bản ghi | ~198.000 dòng | | Số cột | 43 cột | | Định dạng | CSV (Building_Permits.csv) | | Mô tả | Dữ liệu đơn xin cấp phép xây dựng tại San Francisco từ 01/01/2013 trở đi, bao gồm thông tin về loại công trình, địa chỉ, chi phí ước tính, ngày nộp/cấp phép, trạng thái, v.v. Dữ liệu chứa nhiều giá trị thiếu và outlier, phù hợp cho bài toán tiền xử lý. | | Ứng dụng trong đồ án | Phân tích & xử lý missing values, phát hiện & xử lý outlier, mã hóa đặc trưng (Label, One-Hot, Target, Frequency Encoding), chuẩn hóa (Min-Max, Z-score), xử lý mất cân bằng (SMOTE, ADASYN, Under-sampling), giảm chiều (PCA, t-SNE) |

Dữ liệu Time Series — COVID-19 Time Series

| Thuộc tính | Chi tiết | |---|---| | Nguồn | Kaggle — COVID-19 Time Series Data | | Phạm vi | Dữ liệu chuỗi thời gian COVID-19 toàn cầu (confirmed, deaths, recovered) | | Định dạng | CSV (time-series-19-covid-combined.csv) | | Mô tả | Dữ liệu chuỗi thời gian tổng hợp về số ca xác nhận, tử vong và hồi phục do COVID-19 theo quốc gia/vùng lãnh thổ và theo ngày. | | Ứng dụng trong đồ án | Kiểm định tính dừng (ADF, KPSS), phân tích xu hướng & mùa vụ (seasonal decomposition), xử lý missing values chuỗi thời gian, làm mượt (smoothing), chuẩn hóa chuỗi thời gian |


3. Chức năng

Đồ án thực hiện 3 phần tương ứng với 3 loại dữ liệu (Phần 1 — Ảnh, Phần 2 — Bảng, Phần 3 — Chuỗi thời gian). Bảng dưới đây tóm tắt các tác vụ đã thực hiện cho từng phần. Ngoài ra còn nhiều kỹ thuật khác được trình bày chi tiết trong báo cáo.

Phần 1 — Tiền xử lý ảnh

| Tác vụ | Nội dung chi tiết | |---|---| | Phân tích thống kê tập dữ liệu | Perceptual Hashing (pHash), phân tích mất cân bằng lớp (class imbalance), kiểm định Kolmogorov-Smirnov (KS test) | | Cài đặt kỹ thuật tiền xử lý & đo lường | Resize, chuẩn hóa ảnh, augmentation; đánh giá chất lượng bằng SSIM và PSNR | | Giảm chiều & đánh giá | Ablation study, phân tích không gian đặc trưng bằng PCA và t-SNE |

Phần 2 — Tiền xử lý dữ liệu bảng

| Tác vụ | Nội dung chi tiết | |---|---| | EDA thống kê | Kiểm định phân phối, kiểm định MCAR test cho dữ liệu thiếu | | Phát hiện ngoại lai & mã hóa đặc trưng | Phát hiện outlier (IQR, Z-score), mã hóa đặc trưng đầu vào (Label, One-Hot, Target, Frequency Encoding) | | Lựa chọn đặc trưng & đánh giá | Feature selection, đánh giá mô hình bằng Cross-Validation F1-score |

Phần 3 — Tiền xử lý chuỗi thời gian

| Tác vụ | Nội dung chi tiết | |---|---| | Kiểm định tính dừng & phân rã | Kiểm định ADF, KPSS; phân rã STL (Seasonal-Trend decomposition using LOESS) | | Phát hiện dị thường & xây dựng đặc trưng | Phát hiện anomaly trong chuỗi thời gian, xây dựng ma trận đặc trưng (feature matrix) | | Dự báo & kiểm định nhân quả | Dự báo bằng Random Forest Regressor, kiểm định nhân quả Granger (Granger causality) |


4. Yêu cầu

  • Python 3.10+ (khuyến nghị 3.11)
  • Git
  • VS Code + Python extension + Jupyter extension (nếu chạy notebook)

5. Clone và cài môi trường

5.1. Clone repo

git clone https://github.com/Taylor3691/mining-beyond-boundaries.git
cd mining-beyond-boundaries

5.2. Tạo virtual environment

Windows (PowerShell):

py -3.11 -m venv .venv
.\.venv\Scripts\Activate.ps1

macOS/Linux:

python3 -m venv .venv
source .venv/bin/activate

5.3. Cài dependencies

python -m pip install --upgrade pip
pip install -r requirements.txt
pip install -e .

6. Tải dataset từ Kaggle

Project dùng 3 nguồn dataset:

  • Image: https://www.kaggle.com/datasets/alessiocorrado99/animals10
  • Table: https://www.kaggle.com/datasets/aparnashastry/building-permit-applications-data
  • Time series: https://www.kaggle.com/datasets/niketchauhan/covid-19-time-series-data

6.1. Cách 1: Download trực tiếp trên web

  • Mở từng link Kaggle bên trên.
  • Bấm Download.
  • Giải nén và đặt file/folder vào đúng vị trí (xem mục 4 bên dưới).

6.2. Cách 2: dùng Kaggle CLI

Bước A: Tạo API token

  • Vào Kaggle -> Account -> Create New API Token.
  • File kaggle.json sẽ được tải về.
  • Đặt file vào:
- Windows: %USERPROFILE%\\.kaggle\\kaggle.json - macOS/Linux: ~/.kaggle/kaggle.json

Bước B: Cài kaggle cli

pip install kaggle

Bước C: Tải 3 dataset

kaggle datasets download -d alessiocorrado99/animals10 -p data --unzip
kaggle datasets download -d aparnashastry/building-permit-applications-data -p data/table --unzip
kaggle datasets download -d niketchauhan/covid-19-time-series-data -p data/time_series --unzip

Sau khi unzip xong, bạn cần sắp xếp lại thư mục theo đúng cấu trúc ở mục 4.


7. Cấu trúc dữ liệu bắt buộc

Sau khi tải dữ liệu, đảm bảo thư mục data/ có dạng:

data/
  image/
    butterfly/
    cat/
    chicken/
    cow/
    dog/
    elephant/
    horse/
    sheep/
    spider/
    squirrel/
  table/
    Building_Permits.csv
  time_series/
    time-series-19-covid-combined.csv
  small/
    ... (dữ liệu mẫu nhỏ để test nhanh)

Quan trọng:

  • Project đăng ký class image theo tên tiếng Anh: dog, spider, cat, sheep, elephant, chicken, butterfly, cow, squirrel, horse.
  • Dataset animals10 có thể xuất hiện folder tên tiếng Ý (ví dụ cane, gatto, ...). Nếu gặp trường hợp này, bạn cần đổi tên về tiếng Anh như trên.
Mapping gợi ý (Ý -> Anh):
  • cane -> dog
  • gatto -> cat
  • cavallo -> horse
  • pecora -> sheep
  • elefante -> elephant
  • gallina -> chicken
  • farfalla -> butterfly
  • mucca -> cow
  • scoiattolo -> squirrel
  • ragno -> spider

8. Kiểm tra nhanh dữ liệu đã đặt đúng chưa

Windows PowerShell:

Test-Path .\data\table\Building_Permits.csv
Test-Path .\data\time_series\time-series-19-covid-combined.csv
Get-ChildItem .\data\image -Directory | Select-Object Name

Nếu kết quả là True cho 2 file CSV và có đủ 10 class ảnh, bạn đã sẵn sàng chạy.


9. Cách chạy đồ án

9.1. Cách khuyến nghị: chạy bằng Notebook

  • Mở folder project bằng VS Code.
  • Chọn Python interpreter là .venv.
  • Mở notebook trong notebooks/.
  • Run cell từ trên xuống dưới.
Danh sách notebook theo thứ tự chạy:

Phần 1 — Image:

| # | Notebook | Nội dung | |---|---|---| | EDA-a | 01-image-EDA-(a).histogram.analysis.ipynb | Phân tích histogram ảnh | | EDA-b | 01-image-EDA-(b).imbalance.ipynb | Phân tích mất cân bằng lớp | | EDA-c | 01-image-EDA-(c).preprocessing.deduplicate.process.ipynb | Phát hiện & loại ảnh trùng (pHash) | | EDA-d | 01-image-EDA-(d).constrast.n.brightness.analysis.ipynb | Phân tích contrast & brightness | | Prep-a | 01-image-preprocessing-(a).resize.ipynb | Resize ảnh | | Prep-b | 01-image-preprocessing-(b).color.conversion.ipynb | Chuyển đổi không gian màu | | Prep-c | 01-image-preprocessing-(c).normalization.ipynb | Chuẩn hóa ảnh & kiểm định KS | | Prep-d | 01-image-preprocessing-(d).data.augmentation.ipynb | Data augmentation | | Bonus-e | 01.bonus-image-(e).analysis.edge.detection.ipynb | Phát hiện cạnh (edge detection) | | Bonus-f | 01.bonus-image-(f).analysis.feature.space.ipynb | Phân tích không gian đặc trưng (PCA, t-SNE) |

Phần 2 — Table:

| # | Notebook | Nội dung | |---|---|---| | EDA-a | 02-table-EDA-(a)distribution.inspect.ipynb | Kiểm tra phân phối dữ liệu | | EDA-b | 02-table-EDA-(b).correlation.ipynb | Phân tích tương quan | | EDA-c | 02-table-EDA-(c).missing.value.ipynb | Phân tích giá trị thiếu | | Prep-b | 02-table-preprocessing-(b).detect.outlier.ipynb | Phát hiện outlier | | Prep-c | 02-table-preprocessing-(c).numeric.normalization.ipynb | Chuẩn hóa dữ liệu số | | Prep-d | 02-table-preprocessing-(d).categorical.encoding.ipynb | Mã hóa đặc trưng phân loại | | Prep-e | 02-table-preprocessing-(e).feature.selection.ipynb | Lựa chọn đặc trưng | | Bonus-f | 02.bonus-table-(f).imbalance.handler.ipynb | Xử lý mất cân bằng lớp |

Phần 3 — Time Series:

| # | Notebook | Nội dung | |---|---|---| | EDA-a | 03-time.series-EDA-(a).data.components.ipynb | Phân tích thành phần dữ liệu | | EDA-b | 03-time.series-EDA-(b).correlation.structure.ipynb | Phân tích cấu trúc tương quan | | EDA-c | 03-time.series-EDA-(c).rolling.statistic.ipynb | Thống kê trượt (rolling) | | Prep-b | 03-time.series-preprocessing-(b).stationarity.testing.ipynb | Kiểm định tính dừng | | Prep-c | 03-time.series-preprocessing-(c).decomposition.ipynb | Phân rã chuỗi thời gian (STL) | | Prep-e | 03-time.series-preprocessing-(e).detect.outlier.ipynb | Phát hiện dị thường | | Prep-f | 03-time.series-preprocessing-(f).feature.matrix.prediction.ipynb | Xây dựng ma trận đặc trưng & dự báo | | Bonus-g | 03.bonus-time.series-(g).Granger.testing.ipynb | Kiểm định nhân quả Granger |

Lưu ý:

  • Nhiều notebook đã có đoạn sys.path.append('../src'), vì vậy nếu mở notebook đúng vị trí trong repo là chạy được.

9.2. Chạy một số module Python trực tiếp

Từ thư mục gốc project, bạn có thể chạy:

python src/image/analysisimbalanceclass.py
python src/image/preprocessing_resize.py
python src/table/preprocessingdetectoutlier.py

10. Cách sử dụng

  • Nhóm image:
- Tạo ImageDataset - Gọi các service analysis hoặc preprocessing
  • Nhóm table:
- Tạo TableDataset từ Building_Permits.csv - Chạy preprocessing/analysis từ src/table/
  • Nhóm time series:
- Tạo TimeSeriesDataset từ time-series-19-covid-combined.csv - Chạy preprocessing/analysis từ src/time_series/

Kết quả thường là:

  • log trên terminal/notebook
  • bảng thống kê
  • biểu đồ phân tích

11. Lỗi thường gặp và cách xử lý

Lỗi 1: ModuleNotFoundError: No module named ...

Fix:

  • Kiểm tra đã active .venv chưa.
  • Chạy lại:
pip install -r requirements.txt

  • Nếu chạy notebook, đảm bảo đã chọn đúng kernel .venv.
  • Nếu vẫn lỗi module, thêm path src bằng os.path + sys.path:
Notebook (thêm ở cell đầu):
import os
import sys

src_path = os.path.abspath(os.path.join(os.getcwd(), "..", "src")) if src_path not in sys.path: sys.path.append(src_path)

Script Python (thêm ở đầu file):

import os
import sys

src_path = os.path.abspath(os.path.join(os.path.dirname(file), "..")) if src_path not in sys.path: sys.path.append(src_path)

Lỗi 2: Không tìm thấy file dataset

Fix:

  • Kiểm tra đúng tên file:
- Building_Permits.csv - time-series-19-covid-combined.csv
  • Kiểm tra đúng folder:
- data/table/ - data/time_series/ - data/image/<10_classes>/

Lỗi 3: Chạy chậm/tốn RAM khi xử lý image

Fix:

  • Test trước với data/small/.
  • Sau khi ổn định mới chạy full data/image/.

🔗 More in this category

© 2026 GitRepoTrend · Taylor3691/mining-beyond-boundaries · Updated daily from GitHub