用 python 机器学习库训练测试样本时,往往会用到经过特征处理之后的 libsvm 格式的样本数据,这里列出了加载读取 libsvm 数据的几种方法。
加载方式
为了便于演示,创建 libsvm_demo.txt 示例文件,文件内容如下:
1 1:0 2:1 3:0 4:1 5:0.87654 0 1:0 2:0 3:1 4:0 5:0.25643 1 1:0 2:0 3:0 4:1 5:0.78945 0 1:0 2:0 3:1 4:0 5:0.12457 0 1:1 2:0 3:0 4:0 5:0.29856
sklearn 的 datasets 模块的 load_svmlight_file 函数
scikit-learn 的 datasets 模块提供了加载 libsvm 格式数据的函数 load_svmlight_file
,也可以通过 load_svmlight_files
函数加载多个文件。
加载如上文件代码如下:
from sklearn.datasets import load_svmlight_file
data = load_svmlight_file('libsvm_demo.txt')
print('data type →→→', type(data))
print('data len →→→', len(data))
print('data 0 type →→→', type(data[0]))
print('data 1 type →→→', type(data[1]))
print('↓↓↓ data[0] ↓↓↓')
print(data[0])
print('↓↓↓ data[1] ↓↓↓')
print(data[1])
输出如下:
data type →→→ <class 'tuple'> data len →→→ 2 data 0 type →→→ <class 'scipy.sparse.csr.csr_matrix'> data 1 type →→→ <class 'numpy.ndarray'> ↓↓↓ data[0] ↓↓↓ (0, 0) 0.0 (0, 1) 1.0 (0, 2) 0.0 (0, 3) 1.0 (0, 4) 0.87654 (1, 0) 0.0 (1, 1) 0.0 (1, 2) 1.0 (1, 3) 0.0 (1, 4) 0.25643 (2, 0) 0.0 (2, 1) 0.0 (2, 2) 0.0 (2, 3) 1.0 (2, 4) 0.78945 (3, 0) 0.0 (3, 1) 0.0 (3, 2) 1.0 (3, 3) 0.0 (3, 4) 0.12457 (4, 0) 1.0 (4, 1) 0.0 (4, 2) 0.0 (4, 3) 0.0 (4, 4) 0.29856 ↓↓↓ data[1] ↓↓↓ [1. 0. 1. 0. 0.]
从输出的内容可以看出,load_svmlight_file 函数返回的数据类型是元组(tuple),长度是 2,第一个特征数据,scipy.sparse.csr.csr_matrix 稀疏矩阵类型,第二个是标签数据,numpy.ndarray 类型。