首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >加载svmlight格式错误

加载svmlight格式错误
EN

Stack Overflow用户
提问于 2014-09-04 12:29:45
回答 1查看 2K关注 0票数 0

当我尝试对数据使用svmlight python软件包时,我已经将其转换为svmlight格式,我会得到一个错误。这应该是很基本的,我不明白发生了什么。下面是代码:

代码语言:javascript
复制
import svmlight
training_data = open('thedata', "w")
model=svmlight.learn(training_data, type='classification', verbosity=0)

我也试过:

代码语言:javascript
复制
training_data = numpy.load('thedata')

代码语言:javascript
复制
training_data = __import__('thedata')
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-09-04 12:52:40

一个明显的问题是,当您打开数据文件时,您正在截断它,因为您指定的是写模式"w"。这意味着将没有可读取的数据。

无论如何,您不需要像这样读取该文件--如果您的数据文件类似于这个示例中的文件,您需要导入它,因为它是一个python文件。这应该是可行的:

代码语言:javascript
复制
import svmlight
from data import train0 as training_data    # assuming your data file is named data.py
# or you could use __import__()
#training_data = __import__('data').train0

model = svmlight.learn(training_data, type='classification', verbosity=0)

您可能希望将您的数据与示例的数据进行比较。

数据文件格式澄清后的编辑

需要将输入文件解析为一个元组列表,如下所示:

代码语言:javascript
复制
[(target, [(feature_1, value_1), (feature_2, value_2), ... (feature_n, value_n)]),
 (target, [(feature_1, value_1), (feature_2, value_2), ... (feature_n, value_n)]),
 ...
]

svmlight包似乎不支持读取SVM文件格式的文件,并且没有任何解析函数,因此必须用Python实现。SVM文件如下所示:

代码语言:javascript
复制
<target> <feature>:<value> <feature>:<value> ... <feature>:<value> # <info>

下面是一个解析器,它将文件格式转换为svmlight包所需的格式:

代码语言:javascript
复制
def svm_parse(filename):

    def _convert(t):
        """Convert feature and value to appropriate types"""
        return (int(t[0]), float(t[1]))

    with open(filename) as f:
        for line in f:
            line = line.strip()
            if not line.startswith('#'):
                line = line.split('#')[0].strip() # remove any trailing comment
                data = line.split()
                target = float(data[0])
                features = [_convert(feature.split(':')) for feature in data[1:]]
                yield (target, features)

你可以这样用它:

代码语言:javascript
复制
import svmlight

training_data = list(svm_parse('thedata'))
model=svmlight.learn(training_data, type='classification', verbosity=0)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25665569

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档