load_svmlight_files#

sklearn.datasets.load_svmlight_files(files, *, n_features=None, dtype=<class 'numpy.float64'>, multilabel=False, zero_based='auto', query_id=False, offset=0, length=-1)[source]#

从 SVMlight 格式的多个文件加载数据集。

此函数等同于对文件列表应用 load_svmlight_file,但结果会被串联成一个单一的扁平列表,并且样本向量被约束为都具有相同数量的特征。

如果文件包含成对偏好约束(在 svmlight 格式中称为“qid”),除非将 query_id 参数设置为 True,否则这些约束将被忽略。这些成对偏好约束可用于在使用成对损失函数(如某些排序学习问题中的情况)时约束样本的组合,使得只考虑具有相同 query_id 值的对。

参数:
filesarray-like, dtype=str, path-like, file-like or int

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

版本 1.2 中更改: 现在接受 Path-like 对象。

n_featuresint, default=None

要使用的特征数量。如果为 None,则将从任何文件中出现的最大列索引推断。

这可以设置为高于任何输入文件中的实际特征数量的值,但将其设置为较低的值将导致引发异常。

dtypenumpy data type, default=np.float64

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

multilabelbool, default=False

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

zero_basedbool or “auto”, default=”auto”

文件中的列索引是零索引(True)还是一索引(False)。如果列索引是一索引的,则将其转换为零索引以匹配 Python/NumPy 惯例。如果设置为“auto”,则应用启发式检查以从文件内容确定此情况。两种类型的文件都存在于“野外”,但不幸的是它们没有自我标识。当未传入 offset 或 length 时,使用“auto”或 True 应该总是安全的。如果传入 offset 或 length,则“auto”模式会退回到 zero_based=True,以避免启发式检查在文件的不同段上产生不一致的结果。

query_idbool, default=False

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

offsetint, default=0

忽略 offset 个字节,方法是向前寻找,然后丢弃接下来的字节直到下一个换行符。

lengthint, default=-1

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

返回:
[X1, y1, …, Xn, yn] or [X1, y1, q1, …, Xn, yn, qn]: list of arrays

每对 (Xi, yi) 是 load_svmlight_file(files[i]) 的结果。如果 query_id 设置为 True,则返回 (Xi, yi, qi) 三元组。

另请参阅

load_svmlight_file

用于加载此格式单个文件的类似函数。

注意事项

当拟合模型到矩阵 X_train 并根据矩阵 X_test 进行评估时,X_train 和 X_test 具有相同数量的特征(X_train.shape[1] == X_test.shape[1])至关重要。如果使用 load_svmlight_file 单独加载文件,则可能并非如此。

示例

使用 joblib.Memory 缓存 svmlight 文件

from joblib import Memory
from sklearn.datasets import load_svmlight_file
mem = Memory("./mycache")

@mem.cache
def get_data():
    data_train, target_train, data_test, target_test = load_svmlight_files(
        ["svmlight_file_train", "svmlight_file_test"]
    )
    return data_train, target_train, data_test, target_test

X_train, y_train, X_test, y_test = get_data()