Chuyển đến nội dung chính

Bài đăng

Python cho .NET Developer: pip, Virtual Environment và Flask

Nếu bạn là developer .NET, việc học Python sẽ dễ hơn nhiều khi có thể liên hệ với các khái niệm quen thuộc như NuGet, project dependency hay ASP.NET Minimal API. 1. pip là gì? pip là package manager của Python. Nó dùng để cài các thư viện giống như NuGet trong .NET. Cài Flask: pip install flask Kiểm tra các package đã cài: pip list 🧠 Mental Model pip ≈ NuGet. Pip là trình quản lý gói (package manager) tiêu chuẩn, không thể thiếu của Python, dùng để cài đặt, nâng cấp và quản lý các thư viện, phần mềm bổ sung không thuộc thư viện chuẩn từ Python Package Index (PyPI). Pip giúp đơn giản hóa quá trình phát triển, cho phép cài đặt nhanh các thư viện bên thứ ba (như pandas, requests) qua dòng lệnh 2. Virtual Environment là gì? Python thường được cài global trong hệ thống. Nếu nhiều project dùng version thư viện khác nhau sẽ dễ xảy ra xung đột. Virtual Environment (venv) tạo ra một môi trường Python riêng cho từng project. Tạo environment: python...
Các bài đăng gần đây

Tự phát triển Nuget package bằng C# .NET

Trong quá trình phát triển phần mềm, chúng ta thường viết những đoạn code có thể tái sử dụng nhiều lần: Các hàm thống kê Utility functions Helper cho ML pipelines Feature engineering Tuy nhiên nếu các đoạn code này nằm rải rác trong nhiều repository, việc bảo trì sẽ trở nên khó khăn. Giải pháp tốt nhất là đóng gói chúng thành một thư viện (library) và phát hành dưới dạng NuGet package. Trong bài viết này, chúng ta sẽ đi qua toàn bộ quy trình: Idea → Library → GitHub → CI/CD → NuGet Dựa trên kinh nghiệm thực tế khi xây dựng thư viện QuantEdge. Vì sao nên tạo NuGet Package? NuGet là hệ thống quản lý package chính thức của .NET ecosystem. Việc đóng gói code thành NuGet mang lại nhiều lợi ích.  Code Reusability  Easy Distribution  Version Control NuGet hỗ trợ Semantic Versioning: 1.0.0 → first version 1.0.1 → bug fix 1.1.0 → add feature 2.0.0 → breaking change Thiết kế kiến trúc project Trước khi viết code, nên tổ chức repository theo cấu trúc chuẩn. Ví ...

Machine Learning: Từ Feature thô đến Feature có ý nghĩa - Part 3

Lời mở đầu Trong Machine Learning, thuật toán hiếm khi là vấn đề. Dữ liệu và cách biểu diễn dữ liệu mới là yếu tố quyết định. Bài viết này phân tích một mô hình Binary Classification đơn giản trong ML.NET để chỉ ra: Vì sao Accuracy có thể gây hiểu nhầm Vì sao Recall 100% có thể là dấu hiệu nguy hiểm Vì sao Feature Engineering mới là đòn bẩy thực sự Các bài viết khác Machine Learning: Học Machine Learning từ góc nhìn Developer - Part 1 Machine Learning: Từ Đường Thẳng, Vector đến Classification - Part 2 1. Bài toán Ta có dữ liệu: Duration – thời gian khách ở lại website IsPurchased – có mua hàng hay không public class CustomerData { [LoadColumn(0)] public float Duration { get; set; } [LoadColumn(1)] public bool IsPurchased { get; set; } } Mục tiêu: Dự đoán IsPurchased . 2. Setup Pipeline đơn giản var mlContext = new MLContext(); var data = mlContext.Data.LoadFromTextFile<CustomerData>( fileName, hasHeader: true, s...

Walk-Forward là gì?

Trong Machine Learning cổ điển, khi muốn kiểm tra độ ổn định của mô hình, chúng ta thường dùng K-Fold Cross-Validation . Chúng ta xáo trộn dữ liệu, chia làm K phần và huấn luyện. Tuy nhiên, nếu bạn áp dụng cách này cho dữ liệu chuỗi thời gian (Time Series) như dự báo thời tiết, lượng điện tiêu thụ hay lưu lượng server, bạn đang mắc một sai lầm nghiêm trọng: Data Leakage (Rò rỉ dữ liệu). Lý do đơn giản: Bạn không thể dùng dữ liệu của "ngày mai" để dạy cho mô hình dự đoán "hôm nay". Hôm nay, chúng ta sẽ tìm hiểu về Walk-Forward Validation (WFV) và Walk-Forward Optimization (WFO) – tiêu chuẩn vàng để kiểm thử các mô hình phụ thuộc thời gian, đi kèm ví dụ thực tế sử dụng .NET 10 và ML.NET . 1. Walk-Forward Validation (WFV) là gì? Hãy tưởng tượng bạn đang đứng trên dòng thời gian. Bạn chỉ biết quá khứ và muốn dự đoán tương lai gần. WFV mô phỏng chính xác quá trình này. Thay vì xáo trộn dữ liệu ngẫu nhiên, WFV sử dụng một "cửa sổ trượt" (sliding...

Logarithm là gì, và vì sao ln lại được gọi là "tự nhiên"?

Lúc mới học log, mình thấy nó khá khó chịu. Không phải vì công thức, mà vì câu hỏi này: “Tại sao logarithm (log) lại tồn tại?” Nếu chỉ học kiểu: $$ \log_4(16) = 2,\quad \log_4\left(\frac{1}{16}\right) = -2 $$ thì rất dễ quên. Vì não mình không biết tại sao mình cần nó . Bài này mình viết để trả lời đúng câu hỏi đó: log ra đời để làm gì, và vì sao ln được dùng nhiều nhất . 1. Log không sinh ra vì toán học đẹp Log ra đời vì con người… mệt. Trước khi có máy tính, người ta phải nhân và chia những con số rất lớn: tính lãi suất, hàng hải, thiên văn, thương mại. Nhân tay là cực hình. Ý tưởng thiên tài lúc đó là: “Có cách nào biến phép nhân thành phép cộng không?” Nếu một số được viết dưới dạng lũy thừa: $$ a^m \times a^n = a^{m+n} $$ thì phép nhân biến thành phép cộng. Log chính là cách để ghi lại số mũ đó. 2. Log thực sự đo cái gì? Log chỉ trả lời một câu hỏi duy nhất: “Cần nhân cơ số bao nhiêu lần để ra con số này?” Ví dụ: $$ \lo...

Kaggle và Overleaf

1. Kaggle là gì? Kaggle là một nền tảng trực tuyến tập trung vào Data Science và Machine Learning, nơi người học có thể thực hành với các bài toán dữ liệu thực tế thông qua các cuộc thi, dataset và notebook chia sẻ từ cộng đồng. 2. Các thành phần chính của Kaggle 2.1 Competitions Các cuộc thi trên Kaggle cung cấp bài toán thực tế, dữ liệu huấn luyện, dữ liệu kiểm tra và thước đo đánh giá rõ ràng. Một ví dụ tiêu biểu là cuộc thi dự đoán giá nhà (House Prices). 2.2 Datasets Kaggle cung cấp hàng nghìn bộ dữ liệu miễn phí thuộc nhiều lĩnh vực, phục vụ cho việc học tập, nghiên cứu và thực hành Machine Learning. 2.3 Notebooks & Community Notebook cho phép chạy code trực tiếp trên trình duyệt và học hỏi từ các lời giải, phân tích của cộng đồng. 3. Có thể dùng ML.NET để giải Kaggle không? Kaggle không giới hạn ngôn ngữ hay framework. Người học hoàn toàn có thể sử dụng ML.NET với C# để huấn lu...

Kỹ thuật Cyclical Encoding

Trong các bài toán học máy với dữ liệu chuỗi thời gian, đặc trưng thời gian như hour , day , month có tính chất vòng lặp. Tuy nhiên nếu biểu diễn chúng như các số tuyến tính thông thường, model sẽ hiểu sai về độ gần nhau của các thời điểm. Để máy học hiểu được tính chất vòng lặp này, chúng ta sử dụng toán học ánh xạ thời gian lên một vòng tròn đơn vị (Unit Circle) bằng các hàm lượng giác sin và cos . Nguồn tham khảo chính cho kỹ thuật này được lấy từ bài viết: Cyclical Encoding: An Alternative to One-Hot Encoding for Time Series Features (Haden Pelletier, May 3, 2024). Biểu diễn thời gian bằng Sin & Cos Mỗi thời điểm trong một chu kỳ được tách thành hai feature mới: Sin Component Cos Component Công thức tổng quát: $$ x_{sin} = \sin\left(\frac{2 \pi \times t}{T}\right) $$ $$ x_{cos} = \cos\left(\frac{2 \pi \times t}{T}\right) $$ Trong đó: $t$ : giá trị thời gian hiện tại (ví dụ: giờ trong ngày). $T$ : độ...