首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >由python中的arff库创建的arff文件中的名义属性

由python中的arff库创建的arff文件中的名义属性
EN

Stack Overflow用户
提问于 2013-04-28 20:01:16
回答 1查看 1.3K关注 0票数 0

Python的arff库中的dump命令使用户能够根据给定的输入创建一个arff文件,例如:

代码语言:javascript
复制
arff.dump("outputDir", data, relation="relation1",
          names=['age, fatRatio, hairColor'])

生成以下arff:

代码语言:javascript
复制
@relation relation1
@attribute age real
@attribute hairColor string
@data
10,0.2,black
22,10,yellow
30,2,black

对于给定的数据:

代码语言:javascript
复制
data = [[10,0.2,'black'],[22,10,'yellow'],[30,2,'black']]

我的问题是:如何通知相关机制我希望hairColor是一个名义属性,即我希望我的arff头部如下所示:

代码语言:javascript
复制
@relation relation1
@attribute age real
@attribute hairColor **nominal**
@data
...
EN

回答 1

Stack Overflow用户

发布于 2013-06-11 10:42:41

这里概述了几种不同的方法:

https://code.google.com/p/arff/wiki/Documentation

我认为对我来说更好的方法是第二个方法,它建议这样做:

代码语言:javascript
复制
arff_writer = arff.Writer(fname, relation='diabetics_data', names)
arff_writer.pytypes[arff.nominal] = '{not_parasite,parasite}'
arff_writer.write([arff.nominal('parasite')])

如果你看一下arff.nominal的代码,它是这样定义的:

代码语言:javascript
复制
class Nominal(str):
    """Use this class to wrap strings which are intended to be nominals
    and shouldn't have enclosing quote signs."""
    def __repr__(self):
        return self

所以我所做的就是为我的属性中的每个名词性创建一个不同的“包装器”名词性类,如下所示:

代码语言:javascript
复制
class ZipCode(str):
    """Use this class to wrap strings which are intended to be nominals
    and shouldn't have enclosing quote signs."""
    def __repr__(self):
        return self

然后按照上面的代码,你可以这样做:

代码语言:javascript
复制
arff_writer = arff.Writer(fname, relation='neighborhood_data', names)
arff_writer.pytypes[type(myZipCodeObject)] = '{85104,84095}'
# then write out the rest of your attributes...

arff_writer.write([arff.nominal('parasite')])
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16262633

复制
相关文章

相似问题

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