将训练数据更改为libsvm格式,以将其传递给libsvm中的grid.py.

 Mr木木木木_823 发布于 2023-01-09 18:14

我是python的新手,我正在尝试使用libsvm.我试图在grid.py的帮助下进行交叉验证.我从数据库中获取数据,因此它不是稀疏形式的.有没有办法按照grid.py中数据格式的要求以稀疏形式转换它.在文件中声明数据集应采用以下格式:

我尝试使用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)我可以直接传递grid.py中的prob变量而不将其保存到文件中吗?

1 个回答
  • 我将回答我自己的问题.我将数据从数据库保存在csv文件中,并使用csv2libsvm.py将csv转换为libsvm数据:

    csv2libsvm.py <input file> <output file> [<label index = 0>] [<skip headers = 0>]
    

    例如:

     python csv2libsvm.py mydata.csv libsvm.data 0 True
    

    将CSV转换为LIBSVM格式.如果输入文件中没有标签,请指定label index = -1.如果输入文件中有标题,请指定skip headers = 1.

    2023-01-09 18:16 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有