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 offsetlength 传递非默认值。

dtypenumpy数据类型,默认=np.float64

要加载的数据集的数据类型。这将是输出numpy数组的数据类型 Xy .

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应该始终是安全的 offsetlength 已通过。如果 offsetlength 已通过,“自动”模式退回到 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()