我是新手,正在学习Python,并尝试使用libsvm。我想通过grid.py进行交叉验证。但是我的数据来自数据库,因此它并不在稀疏形式下。有没有办法将其转换为grid.py所需的稀疏格式。文档中指出数据集应该采用以下格式:
<label> <index1>:<value1> <index2>:<value2> ...
我尝试使用svm_train,并在svm_parameter的帮助下生成了模型。
y,x=[location_list,data_list]
prob=svm_problem(y,x)
param=svm_parameter('-t 2')
model=svm_train(prob,param)
这里我的训练数据的格式如下:
location_list=[8143L,8163L....]
data_list=[[ -62L, -72L, -62L, -55L, -75L, -66L, -66L, -56L, -57L, -76L, -75L, -79L, -68L, -74L,
-59L....],[-62L, -72L, -62L, -55L, -75L, -66L, -66L, -56L, -57L, -76L, -75L, -79L, -68L, -74L,
-59L....],......]
我尝试将prob作为数据集传递给grid.py,但是它显示未找到数据集,可能应该将其写入文件。或者我能否以某种方式将prob变量作为数据集传递给grid.py。
我可以获取上述或以下格式的培训数据:
[8143L, -62L, -72L, -62L, -55L, -75L, -66L, -66L, -56L, -57L, -76L, -75L, -79L, -68L, -74L,
-59L,...]
[8163L, -62L, -72L, -62L, -55L, -75L, -66L, -66L, -56L, -57L, -76L, -75L, -79L, -68L, -74L,
-59L...]
...................
其中的8143和8163是标签(类),其余是特征。所以我的问题是:
1)我如何将此数据集转换为稀疏形式并保存在文件中以传递给grid.py?
2)我可以将prob变量保存在文件中吗?
3)我可以直接将prob变量传递给grid.py,而无需将其保存到文件中吗?