在機器學習中,數據的組織方式直接影響模型的訓練方式與算法設計。
不同類型的學習任務,對應的數據結構也有所不同。例如,監督學習通常需要標簽數據,而無監督學習則只依賴數據本身的結構;時間序列數據強調時間順序,而圖數據則強調對象之間的關系結構。
在實際應用中,機器學習數據通常以 NumPy 數組、矩陣或結構化對象的形式組織。在 Scikit-Learn 中,許多示例數據集通過 sklearn.datasets 模塊提供,這些數據集不僅用于算法示例,也體現了常見的數據組織方式。
從機器學習任務的角度看,常見的數據集結構主要包括以下幾類:
? 監督學習數據集
? 無監督學習數據集
? 半監督學習數據集
? 自監督學習數據集
? 時間序列數據集
? 序列數據集
? 圖數據集
? 多模態數據集
? 強化學習中的經驗數據
監督學習是機器學習中最常見的學習方式。其核心特點是:每個樣本都對應一個已知標簽。
一個典型的監督學習數據集通常包括:
? 特征矩陣(feature matrix)
? 標簽數組(target array)
特征矩陣通常記為:
X標簽數組通常記為:
y特征矩陣的結構為:
(n_samples, n_features)標簽數組的結構為:
(n_samples,)訓練模型時的常見形式為:
model.fit(X, y)下面以 Scikit-Learn 提供的鳶尾花數據集(Iris dataset)為例觀察其結構:
print(iris.target.shape)示例輸出:
(150,)? iris.data:特征矩陣
? iris.target:標簽數組
該數據集常用于分類算法示例。
在無監督學習中,數據通常沒有標簽信息。算法需要根據數據本身的結構發現潛在模式。
因此,一個典型的無監督學習數據集通常只包含:
? 特征矩陣
表示為:
X其結構為:
(n_samples, n_features)模型訓練通常為:
model.fit(X)常見任務包括:
? 聚類(clustering)
? 降維(dimensionality reduction)
? 異常檢測(anomaly detection)
示例:
Scikit-Learn 提供的 Digits 數據集本身包含標簽,但在無監督學習任務中,可以只使用其中的特征矩陣 digits.data。
print(digits.data.shape)輸出示例:
(1797, 64)? 每個樣本是一張 8×8 手寫數字圖像
? 圖像被展開為 64 維特征向量
在無監督學習任務中,可以只使用:
X = digits.data例如用于聚類或降維分析。
半監督學習介于監督學習與無監督學習之間:只有部分樣本具有標簽。
典型結構包括:
y其中:
? 部分樣本具有標簽
? 在一些實現中,未標注樣本常用 -1 作為占位標記;但這并不是唯一方式,具體表示形式取決于所使用的庫和算法實現
例如:
y = [0, 1, 2, -1, -1, -1]其中:
-1表示該樣本沒有標簽。
示例:Digits 數據集的半監督應用
model.fit(X, y)Scikit-Learn 中常見半監督算法包括:
? LabelPropagation
? LabelSpreading
自監督學習(self-supervised learning)是一種不依賴人工標簽的學習方式。模型通過設計預訓練任務(pretext task),從數據本身構造學習目標。
從訓練任務的角度看,自監督學習通常涉及:
? 原始特征數據
? 自動生成的訓練目標
表示為:
y_generated其中:
X : (n_samples, n_features)自動生成的目標數據通常由數據本身構造,例如:
? 重建輸入數據
? 預測被遮擋的部分
? 判斷兩個樣本是否相似
例如,可以仍以 Scikit-Learn 提供的 Digits 手寫數字數據集作為原始輸入數據:
print(digits.data.shape)輸出示例:
(1797, 64)? 每個樣本是一張 8×8 手寫數字圖像
? 圖像被展開為 64 維特征向量
在自監督學習任務中,可以直接使用:
X = digits.data自監督學習通常直接使用未標注原始數據,監督信號由訓練過程自動構造。因此,從數據組織角度看,它常常仍然以原始樣本集合 X 為基礎,只是訓練目標不是人工給出的標簽,而是由任務機制動態生成。
時間序列數據的核心特點是:數據具有時間順序。
一個典型的時間序列數據集通常包括:
? 時間索引
? 特征矩陣
? 目標變量(可選)
例如:
2026-01-03 13在機器學習中,時間序列數據通常會通過滑動窗口(sliding window) 轉換為監督學習形式:
y = x4這樣就可以使用普通機器學習模型進行預測。
時間序列數據廣泛應用于:
? 股票預測
? 銷售預測
? 傳感器監測
序列數據由一組按順序排列的元素組成,例如:
["I", "love", "machine", "learning"]在機器學習中,序列通常需要轉換為數值表示,例如:
[1, 2, 3, 4]若經過截斷、填充或編碼后,序列數據常可表示為:
y : (n_sequences,) # 可選序列數據常見于:
? 文本數據
? 語音信號
? 用戶行為序列
從廣義上說,時間序列也屬于序列數據;但由于其順序具有明確的時間含義,并常涉及滯后、趨勢、季節性等問題,因此通常單獨作為一類討論。
示例:20 Newsgroups 數據集
Scikit-Learn 提供 20 Newsgroups 文本數據集:
print(len(data.data))該數據集包含:
? 文本序列
? 分類標簽
通常需要使用 TF-IDF 或 詞袋模型進行特征轉換。
圖數據用于描述對象之間的關系結構。
一個典型的圖數據集通常包括:
? 節點特征矩陣
? 鄰接結構
? 節點標簽(可選)
常見表示方式:
y → 節點標簽其中:
A : (n_nodes, n_nodes)圖數據常見任務包括:
? 節點分類
? 鏈接預測
? 圖分類
雖然 Scikit-Learn 不是專門的圖學習框架,但可以構建樣本相似度圖:
A = kneighbors_graph(iris.data, 5)這里 A 表示樣本之間的鄰接關系。
多模態數據集同時包含多種不同類型的數據來源。
例如:
? 圖像
? 文本
? 音頻
? 表格數據
一個樣本可能同時包含多種模態信息,例如:
圖像 + 文本描述數據結構通常表示為多個特征矩陣:
X_text這些矩陣通常具有相同的樣本數量:
(n_samples, ...)關鍵在于不同模態必須按樣本一一對應,否則無法進行聯合學習。
多模態學習廣泛應用于:
? 圖像描述
? 視頻理解
? 跨模態檢索
強化學習的數據來自智能體與環境的交互過程。
每一次交互通常記錄為:
(state, action, reward, next_state)即:
(s, a, r, s')其中:
? state:當前環境狀態
? action:執行的動作
? reward:獲得的獎勵
? next_state:下一狀態
這些數據通常存儲在經驗集合中,例如經驗回放緩沖區(Replay Buffer)。
強化學習算法通過不斷積累這些交互數據來學習最優策略。
小結
在機器學習中,不同任務類型對應不同的數據集結構。監督學習數據集通常由特征矩陣和標簽數組組成,而無監督學習數據集通常只包含特征數據。除此之外,還存在半監督學習、時間序列、序列數據、圖數據、多模態數據以及強化學習交互數據等多種形式。理解這些常見的數據組織方式,有助于根據任務特點正確構建數據,并選擇合適的機器學習方法。
![]()
“點贊有美意,贊賞是鼓勵”
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.