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,則會推斷。此引數對於載入多個屬於較大切片資料集子集的檔案很有用:每個子集可能沒有每個特徵的範例,因此推斷出的形狀可能會因切片而異。只有在傳遞非預設值的 offsetlength 時,才需要 n_features。

dtypenumpy 資料類型,預設值為 np.float64

要載入的資料集資料類型。這將是輸出 numpy 陣列 Xy 的資料類型。

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」,則會套用啟發式檢查以從檔案內容中判斷。兩種檔案類型都「真實存在」,但不幸的是,它們無法自我識別。當未傳遞 offsetlength 時,使用「auto」或 True 應該始終是安全的。如果傳遞 offsetlength,則「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()