加载 SVMlight 格式文件#
- 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` 值的样本对。
- 参数:
- files类数组,dtype=str,路径、文件对象或整数
要加载的文件(路径)。如果路径以“.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”,则应用启发式检查以根据文件内容确定这一点。“in the wild”中同时存在这两种文件,但不幸的是它们自身并不能识别。当没有传递偏移量或长度时,使用“auto”或True应该始终安全。如果传递了偏移量或长度,“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()