我正在使用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
答案 0 :(得分:3)
您没有说您正在使用什么接口。我假设您正在使用GUI。
在“预处理”标签上的“过滤器”下,选择
filters -> unsupervised -> attribute
向下滚动以找到StringToNominal
。默认情况下,它将只转换最后一个属性。您将需要更改它以转换所有字符串。
以防万一:
如果您使用的是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
行中{
和}
之间的标称值列表,例如,可以使用数据>删除重复项功能。