Machine learning Weka分类器不接受字符串值

Machine learning Weka分类器不接受字符串值,machine-learning,classification,weka,Machine Learning,Classification,Weka,我正在使用Weka对数据集进行分类。.arrf数据文件如下所示。分类时我面临的问题是,许多分类器(如NaiveBayes等)不会使用string属性对其进行分类。这两个字符串属性是分类的重要特征。我尝试使用过滤器将字符串转换为标称类型,但它没有将其转换为标称类型。考虑到我拥有的数据集,我应该如何着手 @RELATION transaction @ATTRIBUTE transactionType {'CC Credit',Trans,Exp,Dep,Check} @ATTRIBUTE num

我正在使用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   

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

在“预处理”选项卡上的“过滤器”下,选择

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

以防万一:

如果您使用的是R和RWeka,则可以通过运行

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

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

在“预处理”选项卡上的“过滤器”下,选择

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

以防万一:

如果您使用的是R和RWeka,则可以通过运行

Str2Nom = make_Weka_filter("weka/filters/unsupervised/attribute/StringToNominal")
Str2Nom(transactionType ~ ., data=Transaction, control=Weka_control(R=4:5))
应该可以,但是如果您自己构建ARFF文件,那么另一个选项是在ARFF文件中将这些属性定义为标称属性,方法与您已经对
交易类型
过账
属性所做的相同

要手动构建介于
@属性
行中的
{
}
之间的标称值列表,例如,您可以使用Excel中的数据>删除重复项功能。

应该可以工作,但是,如果您自己构建ARFF文件,那么另一个选项是将这些属性定义为ARFF文件中的标称属性,方法与您对
交易类型
过账
属性所做的相同


要手动构建介于
@属性
行中的
{
}
之间的标称值列表,例如,您可以使用Excel中的数据>删除重复项功能。

您是如何生成数据集/arff文件的?我使用示例文件作为参考手动创建了它。您是如何生成数据集/arff文件的?我使用示例文件作为参考手动创建了它。