load_svmlight_file#
- sklearn.datasets.load_svmlight_file(f, *, n_features=None, dtype=<class 'numpy.float64'>, multilabel=False, zero_based='auto', query_id=False, offset=0, length=-1)[原始碼]#
將 svmlight / libsvm 格式的資料集載入到稀疏 CSR 矩陣中。
此格式是一種基於文字的格式,每行一個樣本。它不儲存零值特徵,因此適用於稀疏資料集。
每行的第一個元素可用於儲存要預測的目標變數。
此格式用作 svmlight 和 libsvm 命令列程式的預設格式。
剖析基於文字的來源可能很耗費資源。當重複處理相同的資料集時,建議使用 joblib.Memory.cache 包裝此載入器,以儲存第一次呼叫的 CSR 結果的記憶體映射備份,並在後續呼叫中受益於近乎瞬時的記憶體映射結構載入。
如果檔案包含成對偏好約束(在 svmlight 格式中稱為「qid」),除非將 query_id 參數設定為 True,否則將忽略這些約束。這些成對偏好約束可用於在使用成對損失函數時約束樣本的組合(某些學習排名問題就是如此),以便僅考慮具有相同 query_id 值的成對樣本。
此實作以 Cython 編寫,速度相當快。但是,在以下位置也提供更快的 API 相容載入器:mblondel/svmlight-loader
- 參數:
- fstr、類路徑、類檔案或 int
(路徑到) 要載入的檔案。如果路徑以「.gz」或「.bz2」結尾,則會即時解壓縮。如果傳遞整數,則會假設為檔案描述符。檔案類或檔案描述符不會被此函式關閉。檔案類物件必須以二進制模式開啟。
在 1.2 版本中變更:現在接受類路徑物件。
- n_featuresint,預設值為 None
要使用的特徵數量。如果為 None,則會推斷。此引數對於載入多個屬於較大切片資料集子集的檔案很有用:每個子集可能沒有每個特徵的範例,因此推斷出的形狀可能會因切片而異。只有在傳遞非預設值的
offset
或length
時,才需要 n_features。- dtypenumpy 資料類型,預設值為 np.float64
要載入的資料集資料類型。這將是輸出 numpy 陣列
X
和y
的資料類型。- multilabelbool,預設值為 False
樣本可能有多個標籤(請參閱 https://www.csie.ntu.edu.tw/~cjlin/libsvmtools/datasets/multilabel.html)。
- zero_basedbool 或 “auto”,預設值為 “auto”
f 中的欄索引是以 0 為基礎 (True) 還是以 1 為基礎 (False)。如果欄索引是以 1 為基礎,則會將它們轉換為以 0 為基礎,以符合 Python/NumPy 慣例。如果設定為「auto」,則會套用啟發式檢查以從檔案內容中判斷。兩種檔案類型都「真實存在」,但不幸的是,它們無法自我識別。當未傳遞
offset
或length
時,使用「auto」或 True 應該始終是安全的。如果傳遞offset
或length
,則「auto」模式會回復為zero_based=True
,以避免啟發式檢查在檔案的不同區段產生不一致的結果。- query_idbool,預設值為 False
如果為 True,則會傳回每個檔案的 query_id 陣列。
- offsetint,預設值為 0
透過向前搜尋來忽略位移的前幾個位元組,然後捨棄直到下一個換行符號的後續位元組。
- lengthint,預設值為 -1
如果嚴格為正數,則一旦檔案中的位置達到 (offset + length) 位元組閾值,就會停止讀取任何新資料行。
- 傳回值:
- X形狀為 (n_samples, n_features) 的 scipy.sparse 矩陣
資料矩陣。
- y形狀為 (n_samples,) 的 ndarray,或長度為 n_samples 的元組列表
目標。當
multilabel=True
時,它是元組的列表,否則為 ndarray。- query_id形狀為 (n_samples,) 的陣列
每個樣本的 query_id。僅在將 query_id 設定為 True 時才會傳回。
另請參閱
load_svmlight_files
用於以此格式載入多個檔案的類似函式,對所有檔案強制執行相同的特徵/欄數。
範例
使用 joblib.Memory 快取 svmlight 檔案
from joblib import Memory from sklearn.datasets import load_svmlight_file mem = Memory("./mycache") @mem.cache def get_data(): data = load_svmlight_file("mysvmlightfile") return data[0], data[1] X, y = get_data()