0

我有这个数据集:

Instance num 0 : 300,24,'Social worker','Computer sciences',Music,10,5,5,1,5,''
Instance num 1 : 1000,20,Student,'Computer engineering',Education,10,5,5,5,5,Sony
Instance num 2 : 450,28,'Computer support specialist',Business,Programming,10,4,1,0,4,Lenovo
Instance num 3 : 1000,20,Student,'Computer engineering','3d Design',1,1,2,1,3,Toshiba
Instance num 4 : 1000,20,Student,'Computer engineering',Programming,2,5,1,5,4,Dell
Instance num 5 : 800,16,Student,'Computer sciences',Education,8,4,3,4,4,Toshiba

我想使用 SMO 和其他多类分类器进行分类,所以我使用以下代码将所有标称值转换为数字:

int [] indices={2,3,4,10};  // indices of nominal columns
for (int i = 0; i < indices.length; i++) {
  int attInd = indices[i];
  Attribute att = data.attribute(attInd);
  for (int n = 0; n < att.numValues(); n++) {

    data.renameAttributeValue(att, att.value(n), "" + n);
  }
}

结果是:

Instance num 0 : 300,24,0,0,0,10,5,5,1,5,0
Instance num 1 : 1000,20,1,1,1,10,5,5,5,5,1
Instance num 2 : 450,28,2,2,2,10,4,1,0,4,2
Instance num 3 : 1000,20,1,1,3,1,1,2,1,3,3
Instance num 4 : 1000,20,1,1,2,2,5,1,5,4,4
Instance num 5 : 800,16,1,0,1,8,4,3,4,4,3

应用“标准化”过滤器后,结果将如下所示:

Instance num 0 : 0,0.666667,0,0,0,1,1,1,0.2,1,0
Instance num 1 : 1,0.333333,1,1,1,1,1,1,1,1,1
Instance num 2 : 0.214286,1,2,2,2,1,0.75,0,0,0.5,2
Instance num 3 : 1,0.333333,1,1,3,0,0,0.25,0.2,0,3
Instance num 4 : 1,0.333333,1,1,2,0.111111,1,0,1,0.5,4
Instance num 5 : 0.714286,0,1,0,1,0.777778,0.75,0.5,0.8,0.5,3

问题是仍在字符串“标准化”过滤器中的转换列不会标准化它们......

有任何想法吗?

我的第二个问题:除了 SMO,我应该使用什么作为多类分类器?

4

2 回答 2

0

不要将名词/分类转换为浮点数(/整数),然后对其进行规范化。这是没有意义的。垃圾进垃圾出。将它们视为连续数字或数字向量会给出无意义的结果,例如“'Engineering' + 'Nursing' = 'Architecture' 的平均值”

处理名词/分类的正确方法是将每个变量转换为虚拟变量(也称为“虚拟编码”或“二分法”)。假设如果 Occupation 列(或 Major、Elective 或其他)有 K 个级别,那么您创建 K 或 (K-1) 个二进制变量,除了一个包含 1 的对应列之外,它们处处为 0。查找 Weka 文档以找到正确的函数调用。

参看。例如SO:名义属性的虚拟编码(用于逻辑回归)

于 2015-09-25T00:07:15.093 回答
-1

我相信将字符串转换为数字的最佳方法可以使用 filter 来完成weka.filters.unsupervised.attribute.StringToWordVector

这样做之后,您可以应用“标准化”过滤器weka.classifiers.functions.LibSVM

于 2015-01-12T10:51:06.680 回答