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)[源代码]#
从 SVMlight 格式的多个文件中加载数据集。
此函数相当于对文件列表应用 load_svmlight_file,但结果会连接成一个扁平的列表,并且样本向量被限制为都具有相同数量的特征。
如果文件包含成对偏好约束(在 svmlight 格式中称为 “qid”),则除非将 query_id 参数设置为 True,否则将忽略这些约束。这些成对偏好约束可用于在使用成对损失函数(某些排序学习问题中就是这种情况)时约束样本的组合,以便只考虑具有相同 query_id 值的对。
- 参数:
- files类数组对象,dtype=str,类路径对象,类文件对象或 int
要加载的文件(路径)。如果路径以“.gz”或“.bz2”结尾,则会即时解压缩。如果传入整数,则假定为文件描述符。此函数不会关闭类文件对象和文件描述符。类文件对象必须以二进制模式打开。
1.2 版本新增: 现在接受类路径对象。
- n_featuresint, 默认值=None
要使用的特征数量。如果为 None,则将从任何文件中出现的最大列索引推断。
这可以设置为高于任何输入文件中实际特征数量的值,但将其设置为较低值将引发异常。
- dtypenumpy 数据类型, 默认值=np.float64
要加载的数据集的数据类型。这将是输出 numpy 数组
X
和y
的数据类型。- multilabelbool, 默认值=False
每个样本可能具有多个标签(参见 https://www.csie.ntu.edu.tw/~cjlin/libsvmtools/datasets/multilabel.html)。
- zero_basedbool 或 “auto”, 默认值=”auto”
文件 f 中的列索引是基于零 (True) 还是基于一 (False)。如果列索引是基于一的,它们将被转换为基于零以匹配 Python/NumPy 约定。如果设置为“auto”,则会应用启发式检查以从文件内容中确定。这两种文件在“野外”都存在,但遗憾的是它们无法自我识别。当未传递 offset 或 length 时,使用“auto”或 True 应该始终是安全的。如果传递了 offset 或 length,则“auto”模式会回退到 zero_based=True,以避免启发式检查在文件的不同段上产生不一致的结果。
- query_idbool, 默认值=False
如果为 True,将返回每个文件的 query_id 数组。
- offsetint, 默认值=0
通过向前查找忽略 offset 字节,然后丢弃后续字节直到下一个换行符。
- lengthint, 默认值=-1
如果严格为正,一旦文件中的位置达到 (offset + length) 字节阈值,就停止读取任何新的数据行。
- 返回:
- [X1, y1, …, Xn, yn] 或 [X1, y1, q1, …, Xn, yn, qn]: 数组列表
每个 (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()