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命令行程序的默认格式。
解析基于文本的源可能会很昂贵。当重复处理同一数据集时,建议将此加载器与jobib.Memory. ache包装起来,以存储第一次调用的CSR结果的memmapped备份,并受益于后续调用的memmapped结构的几乎即时加载。
如果文件包含成对偏好约束(在svmlight格式中称为“qid”),则将忽略这些约束,除非select_id参数设置为True。当使用成对损失函数时,这些成对偏好约束可以用于约束样本的组合(正如一些学习排序问题中的情况),以便仅考虑具有相同select_id值的对。
此实现是用Cython编写的,速度相当快。然而,更快的API兼容加载程序也可以在:mblondel/svmlight-loader上找到
- 参数:
- f字符串、类似路径、类似文件或int
(Path to)要加载的文件。如果路径以“.gz”或“.bz2”结束,则将被动态解压缩。如果传递了一个integer,则假设它是一个文件描述符。此函数不会关闭类似文件或文件描述符。文件类对象必须以二进制模式打开。
在 1.2 版本发生变更: 类似路径的物体现在已被接受。
- n_featuresint,默认=无
要使用的功能数量。如果无,则将进行推断。这个参数对于加载作为更大切片数据集子集的几个文件很有用:每个子集可能没有每个特征的示例,因此推断的形状可能会因切片而异。仅在以下情况下才需要n_features
offset
或length
传递非默认值。- dtypenumpy数据类型,默认=np.float64
要加载的数据集的数据类型。这将是输出numpy数组的数据类型
X
和y
.- multilabel布尔,默认=假
每个样本可能有多个标签(请参阅https://www.csie.ntu.edu.tw/cjlin/libsvmtools/ets/multilabel.html)。
- zero_basedbool或“Auto”,默认=“Auto”
f中的列索引是从零开始(True)还是从一开始(False)。如果列索引是从1开始的,它们将被转换为从0开始的,以匹配Python/NumPy约定。如果设置为“auto”,则应用启发式检查以根据文件内容确定此操作。这两种类型的文件都是“在野外”出现的,但不幸的是,它们不能自我识别。当没有时,使用“Auto”或True应该始终是安全的
offset
或length
已通过。如果offset
或length
已通过,“自动”模式退回到zero_based=True
以避免启发式检查在文件的不同段上产生不一致的结果。- query_id布尔,默认=假
如果为True,将返回每个文件的select_id数组。
- offsetint,默认=0
通过向前查找忽略偏移量的第一个字节,然后丢弃后面的字节,直到下一个新的行字符。
- lengthint,默认=-1
如果严格为正值,一旦文件中的位置达到(偏差+长度)字节阈值,则停止读取任何新数据行。
- 返回:
- Xscipy.稀疏形状矩阵(n_samples,n_features)
数据矩阵。
- y形状的nd数组(n_samples,),或长度为n_samples的二元组列表
目标.它是一个二元组列表,当
multilabel=True
,否则是ndray。- query_id形状数组(n_samples,)
每个样本的查询_id。仅当select_id设置为True时返回。
参见
load_svmlight_files
类似的功能,用于以这种格式加载多个文件,对所有文件强制执行相同数量的功能/列。
示例
要使用joblib.内存缓存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()