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
DataTablecó hàng và cột. - 3D (Tensor): Một tập hợp các bảng 2D chồng lên nhau.
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.
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.
Snake case
Trả lờiXóa(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