machine-learning - 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
解决方案
你没有说你正在使用什么接口。我假设您正在使用 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))
推荐阅读
- python - discord.py:按 id 查找用户
- c# - API 可以从另一个 API 返回整个 JSON 数据结构吗?
- julia - 尝试安装 julia 软件包时出现分段错误
- scala - 如何在 Haskell 中创建相互引用的数据结构?
- python - 正则表达式模式需要在不同位置的两个特定字符串中的任何一个
- recursion - 使用 (1,...,K) 找到与 N 相加的可能和数
- sql-server - 当任何列不为空时对多列的唯一约束
- c++ - 使用 OpenCV 捕获图像,而不是视频
- php - 在 PHP 中按字母顺序对包含文件路径的数组进行排序
- sql - Laravel Eloquent 按关系计数排序