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兼容加载器也位于:

Parameters:
fstr, path-like, file-like或int

(路径到)要加载的文件。如果路径以“.gz”或“.bz2”结尾,它将在后台解压缩。如果传递了一个整数,则假定为文件描述符。文件类或文件描述符不会被此函数关闭。文件类对象必须以二进制模式打开。

Changed in version 1.2: 现在接受路径类对象。

n_featuresint, default=None

要使用的特征数量。如果为None,将推断出来。此参数在加载较大切片数据集的几个子集时很有用:每个子集可能没有每个特征的示例,因此推断的形状可能从一个切片到另一个切片不同。 n_features仅在传递了非默认值的 offsetlength 时需要。

dtypenumpy数据类型, default=np.float64

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

multilabelbool, default=False

样本可能每个都有多个标签(参见 https://www.csie.ntu.edu.tw/~cjlin/libsvmtools/datasets/multilabel.html)。

zero_basedbool或”auto”, default=”auto”

f中的列索引是否为零基(True)或一基(False)。如果列索引为一基,它们将被转换为零基以匹配Python/NumPy约定。 如果设置为”auto”,将应用启发式检查以从文件内容中确定这一点。这两种文件在野外都会出现,但不幸的是它们不是自标识的。使用”auto”或True在未传递 offsetlength 时总是安全的。 如果传递了 offsetlength ,”auto”模式将回退到 zero_based=True ,以避免启发式检查在文件的不同段上产生不一致的结果。

query_idbool, default=False

如果为True,将返回每个文件的query_id数组。

offsetint, default=0

通过向前查找忽略前offset字节,然后丢弃直到下一个换行字符的字节。

lengthint, default=-1

如果严格为正,一旦文件中的位置达到(offset + length)字节阈值,将停止读取任何新行数据。

Returns:
Xscipy.sparse矩阵,形状为(n_samples, n_features)

数据矩阵。

yndarray,形状为(n_samples,),或长度为n_samples的元组列表

目标。当 multilabel=True 时为元组列表,否则为ndarray。

query_id形状为(n_samples,)的数组

每个样本的query_id。仅当query_id设置为True时返回。

See also

load_svmlight_files

用于加载多个文件的类似函数,强制所有文件具有相同的特征/列数。

Examples

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