首页 > 解决方案 > Weka 分类器不接受字符串值

问题描述

我正在使用 Weka 对数据集进行分类。.arrf 数据文件如下所示。我在分类时面临的问题是很多分类器,如 NaiveBayes 等,不会使用字符串属性对其进行分类。这两个字符串属性是分类的重要特征。我尝试使用过滤器将字符串转换为名义类型,但它没有将其转换为名义类型。考虑到我拥有的数据集,我应该怎么做?

@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   

标签: machine-learningclassificationweka

解决方案


你没有说你正在使用什么接口。我假设您正在使用 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))

推荐阅读