Weka分类器不接受字符串值

时间:2018-09-06 23:25:07

标签: machine-learning classification weka

我正在使用Weka对数据集进行分类。 .arrf数据文件如下所示。我在分类时面临的问题是,许多分类器(如NaiveBayes等)都不会采用string属性对其进行分类。这两个字符串属性是分类的重要功能。我尝试使用过滤器将字符串转换为名义类型,但未将其转换为名义类型。考虑到我拥有的数据集,我该如何处理?

@RELATION transaction

@ATTRIBUTE transactionType  {'CC Credit',Trans,Exp,Dep,Check}
@ATTRIBUTE number numeric
@ATTRIBUTE posting {Yes,No}
@ATTRIBUTE String1 string
@ATTRIBUTE String2 string


@ATTRIBUTE amount real
@ATTRIBUTE class {1,2}


@DATA
'CC Credit',?,Yes,'XYZ Bank','ONLINE PYMT Aug',-1582100.38,1   
Trans,?,Yes,?,'ACH DEBIT XYZ CREDIT CRD-EPAY',-59219.40,2   
Exp,?,Yes,'First Nolastname','ACH DEBIT First Nolastname-RECEIVER',-176011.56,2   

2 个答案:

答案 0 :(得分:3)

您没有说您正在使用什么接口。我假设您正在使用GUI。

在“预处理”标签上的“过滤器”下,选择

filters -> unsupervised -> attribute

向下滚动以找到StringToNominal。默认情况下,它将只转换最后一个属性。您将需要更改它以转换所有字符串。

Screenshot of GUI

以防万一:

如果您使用的是R和RWeka,则可以通过运行获取此过滤器

Str2Nom = make_Weka_filter("weka/filters/unsupervised/attribute/StringToNominal")
Str2Nom(transactionType ~ ., data=Transaction, control=Weka_control(R=4:5))

答案 1 :(得分:0)

G5W's answer应该可以工作,但是如果您自己构造ARFF文件,那么另一种选择是以与{{1 }}和transaction type属性。

要手动构造posting行中{}之间的标称值列表,例如,可以使用数据>删除重复项功能。