Weka J48 分类测试实例和 Return 值
Weka J48 Classification Test Instances and Return Value
我有一个对象实例,它是 J48 树 classifier 的训练集。对该对象的插入工作正常。但是现在我需要 class 验证新数据。假设我在训练集上有 24 个属性。表示查询集中实例的最常用方法是什么?
每个实例必须有 23 个属性(除标签值外与训练集模式相同)或
使用与训练集相同的模式,将最后一个属性定义为标签,当它运行 classifier 时,不知何故省略了标签(我不确定这个)?
第二个疑问出现在class化之后:
j48.classifyInstance()的return值;
该值被 return 编辑为双精度值,并且根据 API 是测试集上 class 的标识符。但是,trainset.class.class_name_from_int 的参数为 int。来自 classifyInstance 的双 returned 只说 0、1、... numClasses-1 并且我只需要转换为 int 还是我需要应用任何数学转换,如 ceil 或 floor?
第一个问题:
当你有一个带标签的测试集时,我认为第二种方式更好,因为当你的测试实例也有标签时,你也可以评估你的模型。省略标签不是必需的,因为在分类过程中模型不使用它。
对于你的第二个问题,将classifyInstance
的double值转换成这样绝对够了:
String prediction = train.classAttribute().value((int) classifier.classifyInstance(testInstance));
我有一个对象实例,它是 J48 树 classifier 的训练集。对该对象的插入工作正常。但是现在我需要 class 验证新数据。假设我在训练集上有 24 个属性。表示查询集中实例的最常用方法是什么?
每个实例必须有 23 个属性(除标签值外与训练集模式相同)或
使用与训练集相同的模式,将最后一个属性定义为标签,当它运行 classifier 时,不知何故省略了标签(我不确定这个)?
第二个疑问出现在class化之后:
j48.classifyInstance()的return值; 该值被 return 编辑为双精度值,并且根据 API 是测试集上 class 的标识符。但是,trainset.class.class_name_from_int 的参数为 int。来自 classifyInstance 的双 returned 只说 0、1、... numClasses-1 并且我只需要转换为 int 还是我需要应用任何数学转换,如 ceil 或 floor?
第一个问题: 当你有一个带标签的测试集时,我认为第二种方式更好,因为当你的测试实例也有标签时,你也可以评估你的模型。省略标签不是必需的,因为在分类过程中模型不使用它。
对于你的第二个问题,将classifyInstance
的double值转换成这样绝对够了:
String prediction = train.classAttribute().value((int) classifier.classifyInstance(testInstance));