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

Làm quen Google Colab và dữ liệu Tensor

Là một lập trình viên C#/.NET, khi bước chân vào thế giới AI/Machine Learning, rào cản lớn nhất không phải là thuật toán mà là môi trường làm việc và tư duy dữ liệu khác biệt. Hôm nay, mình sẽ hướng dẫn các bạn sử dụng Google Colab và làm quen với khái niệm "Chiều không gian" (Dimensions) – xương sống của mọi mô hình ML.

1. Google Colab là gì? Tại sao phải dùng nó?

Nếu trong .NET chúng ta có Visual Studio, thì trong giới làm AI, chúng ta có Jupyter Notebook. Google Colab là một dạng Jupyter Notebook tùy biến cho phép thực thi Python trên nền tảng đám mây, được cung cấp bởi Google.

  • Zero Configuration: Không cần cài đặt Python, Environment hay SDK lên máy tính.
  • Free GPU: Google cho mượn Card đồ họa miễn phí để huấn luyện mô hình (thứ mà máy văn phòng thường không có).
  • Interactive: Chạy từng dòng code và thấy kết quả ngay lập tức, cực kỳ phù hợp để thực nghiệm dữ liệu chứng khoán.

2. Hiểu về Dimension (Chiều không gian) qua góc nhìn lập trình viên C#

Trong C#, chúng ta quen với List<T> hay Array[index]. Trong Python, chúng ta dùng thư viện NumPy để xử lý các mảng này, gọi chung là Tensor. Hãy hiểu đơn giản:

  • 1D (Vector): Một mảng đơn lẻ double[].
  • 2D (Matrix): Một bảng dữ liệu giống DataTable có hàng và cột.
  • 3D (Tensor): Một tập hợp các bảng 2D chồng lên nhau.
Tensor trong Machine Learning không phải là kiểu dữ liệu mới. Nó chính là mảng nhiều chiều quen thuộc trong C#, nhưng được sử dụng với tư duy "mỗi chiều mang một ý nghĩa dữ liệu rõ ràng".

3. Thực hành Step-by-Step trên Google Colab

Bước 1: Khởi tạo

Truy cập Google Colab, nhấn New Notebook. Ở ô đầu tiên, hãy nạp các "Namespace" cần thiết (trong Python gọi là Import):

import numpy as np # Xử lý mảng (giống LINQ + Array)
import pandas as pd # Xử lý bảng (giống DataTable)

Bước 2: Ví dụ 1 - Dữ liệu Chứng khoán (2D)

Dữ liệu chứng khoán cơ bản thường có 2 chiều: Dòng (thời gian) và Cột (giá trị). Hãy thử tạo một mảng chứa giá đóng cửa và khối lượng của 3 ngày:

# Mảng 2D: [ [Giá, Khối lượng], [Giá, Khối lượng], ... ]
data_stock = np.array([
    [150.5, 1000], 
    [152.0, 1200], 
    [149.8, 900]
])

print("Hình dạng dữ liệu (Shape):", data_stock.shape)
# Kết quả: (3, 2) -> 3 hàng, 2 cột

Bước 3: Ví dụ 2 - Giỏ hàng siêu thị (1D)

Đây là mức độ đơn giản nhất, giống như bạn khai báo một mảng số lượng sản phẩm trong C#:

# Số lượng: [Táo, Cam, Chuối]
shopping_list = np.array([10, 5, 20])

print("Số chiều:", shopping_list.ndim) 
# Kết quả: 1

Bước 4: Nâng cấp lên 3D

Nếu bạn muốn quản lý cùng lúc nhiều mã (VIC, VNM), bạn sẽ có một "khối" dữ liệu 3D:

# [Mã chứng khoán, Ngày, Chỉ số]
market_data = np.array([
    [[150, 1000], [152, 1200]], # Mã A
    [[80, 500], [81, 600]]       # Mã B
])

print("Shape:", market_data.shape)
# Kết quả: (2, 2, 2) -> 2 mã, 2 ngày, 2 chỉ số
Thực hiện việc chuyển đổi một mảng 3 chiều (3D Array) từ thư viện NumPy sang một bảng dữ liệu 2 chiều (DataFrame) của Pandas.

Khởi tạo mảng NumPy 3D

market_data = np.array([
    [[150,100],[152,100]],
    [[80,50], [81,600]]
]);
print("Shape: ", market_data.shape);
Tính Index và chuyển thành 2D
index = pd.RangeIndex(start=0, stop=market_data.shape[0] * market_data.shape[1], step=1);
print("index = ", index, " - ", market_data.shape[0], " - ",market_data.shape[1]);
market_data_frame = pd.DataFrame(market_data.reshape(-1,2), index = index, columns=["Open", "Close"]);
print(market_data_frame);
Kết quả
Shape:  (2, 2, 2)
index =  RangeIndex(start=0, stop=4, step=1)  -  2  -  2
   Open  Close
0   150    100
1   152    100
2    80     50
3    81    600
market_data.reshape(-1, 2): Chuyển mảng từ 3D về 2D.
  • Số 2 chỉ định rằng kết quả cuối cùng phải có 2 cột (tương ứng với Open và Close).
  • Số -1 bảo NumPy tự tính toán số hàng cần thiết để chứa đủ dữ liệu. Ở đây có tổng cộng 8 phần tử, chia cho 2 cột sẽ được 4 hàng.
columns=["Open", "Close"]: Đặt column name cho 2 cột của bảng.

Lời kết

Sử dụng Google Colab giúp bạn tập trung hoàn toàn vào logic xử lý dữ liệu mà không lo về hạ tầng. Với tư duy từ C#, bạn chỉ cần nắm vững cách di chuyển giữa các "chiều" (Shape) của mảng là đã có thể bắt đầu xây dựng các thuật toán lọc cổ phiếu cơ bản rồi.

Nhận xét

  1. Snake case
    (quy tắc con rắn) là quy tắc đặt tên trong lập trình và tin học, thay thế khoảng trắng bằng dấu gạch dưới _ và thường sử dụng chữ thường hoàn toàn (ví dụ: ten_bien_day) để các từ ghép dễ đọc hơn, phổ biến trong Python, Ruby, và dùng cho biến, hàm, tên tệp; có biến thể SCREAMING_SNAKE_CASE (chữ hoa) dùng cho hằng số (ví dụ: MAX_VALUE)

    Đặc điểm chính

    Phân tách từ: Dùng _ (gạch dưới) thay cho khoảng trắng.
    Chữ thường: Thường viết tất cả các chữ cái bằng chữ thường (ví dụ: user_id, calculate_total).
    Mục đích: Tăng khả năng đọc hiểu cho tên biến, hàm, hoặc tên tệp có nhiều từ, vì khoảng trắng không được phép

    Trả lờiXóa

Đăng nhận xét

Bài đăng phổ biến từ blog này

[ASP.NET MVC] Authentication và Authorize

Một trong những vấn đề bảo mật cơ bản nhất là đảm bảo những người dùng hợp lệ truy cập vào hệ thống. ASP.NET đưa ra 2 khái niệm: Authentication và Authorize Authentication xác nhận bạn là ai. Ví dụ: Bạn có thể đăng nhập vào hệ thống bằng username và password hoặc bằng ssh. Authorization xác nhận những gì bạn có thể làm. Ví dụ: Bạn được phép truy cập vào website, đăng thông tin lên diễn đàn nhưng bạn không được phép truy cập vào trang mod và admin.

ASP.NET MVC: Cơ bản về Validation

Validation (chứng thực) là một tính năng quan trọng trong ASP.NET MVC và được phát triển trong một thời gian dài. Validation vắng mặt trong phiên bản đầu tiên của asp.net mvc và thật khó để tích hợp 1 framework validation của một bên thứ 3 vì không có khả năng mở rộng. ASP.NET MVC2 đã hỗ trợ framework validation do Microsoft phát triển, tên là Data Annotations. Và trong phiên bản 3, framework validation đã hỗ trợ tốt hơn việc xác thực phía máy khách, và đây là một xu hướng của việc phát triển ứng dụng web ngày nay.

Tổng hợp một số kiến thức lập trình về Amibroker

Giới thiệu về Amibroker Amibroker theo developer Tomasz Janeczko được xây dựng dựa trên ngôn ngữ C. Vì vậy bộ code Amibroker Formula Language sử dụng có syntax khá tương đồng với C, ví dụ như câu lệnh #include để import hay cách gói các object, hàm trong các block {} và kết thúc câu lệnh bằng dấu “;”. AFL trong Amibroker là ngôn ngữ xử lý mảng (an array processing language). Nó hoạt động dựa trên các mảng (các dòng/vector) số liệu, khá giống với cách hoạt động của spreadsheet trên excel.