sklearn.datasets.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結果的映射備份,并受益于針對后續調用的內存映射(memmapped)結構的近乎瞬時加載。
如果文件包含成對的首選項約束(在svmlight格式中稱為“ qid”),除非query_id參數設置為True,否則將忽略這些約束。當使用成對損失函數時(如某些學習排序問題的情況),這些成對偏好約束可用于約束樣本組合,從而僅考慮具有相同query_id值的對。
此實現是用Cython編寫的,速度相當快。但是,也可以從以下位置獲得更快的與API兼容的加載程序:
https://github.com/mblondel/svmlight-loader
參數 | 說明 |
---|---|
f | {str, file-like, int} (到)要加載的文件的路徑。 如果路徑以“.gz”或“ .bz2”結尾,則將即時解壓縮。如果傳遞整數,則假定它是文件描述符。此函數不會關閉類文件或文件描述符。類文件的對象必須以二進制模式打開。 |
n_features | int or None 要使用的特征數量。如果為None,則將其推斷出來。此參數對于加載作為較大切片數據集的子集的幾個文件很有用:每個子集可能沒有每個特征的示例,因此推斷的形狀可能在不同切片之間有所不同。 僅當將offset或length傳遞為非默認值時才需要n_features。 |
dtype | numpy data type, default np.float64 要加載的數據集的數據類型。即輸出numpy數組X和y的數據類型。 |
multilabel | boolean, optional, default False 每個樣本可能都有幾個標簽(請參見https://www.csie.ntu.edu.tw/~cjlin/libsvmtools/datasets/multilabel.html) |
zero_based | boolean or “auto”, optional, default “auto” f中的列索引是從零開始(zero-based)(True)還是從一開始(one-based)(False)。 如果列索引基于1(one-based),則將其轉換為基于0(zero-based)的索引,以匹配Python / NumPy約定。 如果設置為“自動”,則將應用啟發式檢查來從文件內容中確定。 兩種文件都是“自然”出現的,但它們無法自識別。當沒有offset或length傳遞時,使用“auto”或True始終應該是安全的。如果傳遞了offset或length,則“auto”模式會退回到zero_based = True,以避免在文件的不同段上啟發式檢查產生不一致的結果。 |
query_id | boolean, default False 如果為True,則將為每個文件返回query_id數組。 |
offset | integer, optional, default 0 通過向前查找來忽略偏移的第一個字節,然后丟棄隨后的字節,直到下一個新的行字符為止。 |
length | integer, optional, default -1 如果嚴格正向,則一旦文件中的位置達到(offset + length)字節閾值,就停止讀取任何新的數據行。 |
返回值 | 說明 |
---|---|
X | scipy.sparse matrix of shape (n_samples, n_features) |
y | ndarray of shape (n_samples,), or, in the multilabel a list of tuples of length n_samples. |
query_id | array of shape (n_samples,) 每個樣本的query_id。 僅在query_id設置為True時返回。 |
另見
類似的函數,用于以這種格式加載多個文件,并對所有文件執行相同數量的features/columns。
示例
要使用joblib.Memory來緩存svmlight文件:
from joblib import Memory
from .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()