Weka 未标记属性...是不是必须是实例的一部分才能进行分类?
Posted
技术标签:
【中文标题】Weka 未标记属性...是不是必须是实例的一部分才能进行分类?【英文标题】:Weka unlabeled attribute...does it has to be part of the Instance to get classified?Weka 未标记属性...是否必须是实例的一部分才能进行分类? 【发布时间】:2013-08-10 04:00:02 【问题描述】:简单快速的怀疑。假设我的 ARFF 看起来像这样:
@attribute outlook sunny, overcast, rainy
@attribute temperature numeric
@attribute humidity numeric
@attribute windy TRUE, FALSE
@attribute play yes, no
@data
sunny, 85, 85, FALSE, no
sunny, 80, 90, TRUE, no
overcast, 83, 86, FALSE, yes
rainy, 70, 96, FALSE, yes
rainy, 68, 80, FALSE, yes
......
5 个属性(4 个没有类属性)。当我创建一个Instance进行分类时,我应该为属性类引入一个值吗?喜欢 ”?”或“-1”或类似的东西。它会改变什么吗?示例:
ArrayList<Double> featureVector = new ArrayList<Double>();
featureVector.add((double) 0);
featureVector.add((double) 85);
featureVector.add((double) 85);
featureVector.add((double) 1);
//featureVector.add((double) -1); -> Class attribute
Instances instances = classification.featureVectorToInstances(featureVector);
result = classification.classifyInstanceToString(instances.firstInstance());
以及功能:
公共实例 featureVectorToInstances(ArrayList featureVector)
Instances instances = new Instances("Instances", attributes, 0);
DenseInstance instance = new DenseInstance(attributes.size());
for(int i = 0; i < featureVector.size(); i++)
instance.setValue(i, featureVector.get(i));
instances.add(instance);
//Set class attribute
instances.setClassIndex(attributes.size()-1);
return instances;
public StringclassifyInstanceToString(Instance unlabeled) throws Exception
double clsLabel = cModel.classifyInstance(unlabeled);
unlabeled.setClassValue(clsLabel);
return unlabeled.classAttribute().value((int)clsLabel);
提前致谢
【问题讨论】:
有人吗?它过去了一个多星期,仍然没有正确的答案......:( 【参考方案1】:如果我理解正确:
您必须为火车实例提供标签。原因:学习算法使用跟踪数据构建模型,然后使用模型对新实例进行分类,然后评估他自己的类预测,将它们与原始标签进行比较。因此,如果没有标签,就无法评估算法性能。
【讨论】:
嗯,我不知道我解释得好不好。是的,有必要为训练实例提供标签,但我的意思是是否有必要为我们想要分类的每个实例提供类属性值(标签,我们想要找出的那个!)。我已经在主帖中添加了一些代码......也许现在更清楚了以上是关于Weka 未标记属性...是不是必须是实例的一部分才能进行分类?的主要内容,如果未能解决你的问题,请参考以下文章
朴素贝叶斯 (Weka) - 属性总数 x 实例总数 - 为啥不同?