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()