Machine learning 在对新的标称实例进行分类时更新数据集

Machine learning 在对新的标称实例进行分类时更新数据集,machine-learning,data-mining,weka,Machine Learning,Data Mining,Weka,我使用J48对由数值和标称值组成的实例进行分类。 我的问题是,我不知道在我的程序中会遇到哪个标称值。 因此,我需要“动态”更新模型的标称属性数据 例如,假设我只有2个属性,职业和年龄,运行如下: 占用属性={} 输入:[钢琴老师,22] 职业属性={钢琴教师} 输入:[学校教师,30] 职业属性={钢琴老师,学校老师} 输入:[钢琴老师,40] 职业属性={钢琴老师,学校老师} 等等 现在,我尝试通过复制以前的属性,添加新属性,然后更新模型的数据来手动执行此操作。 当训练模型时,这很好

我使用J48对由数值和标称值组成的实例进行分类。 我的问题是,我不知道在我的程序中会遇到哪个标称值。 因此,我需要“动态”更新模型的标称属性数据

例如,假设我只有2个属性,职业和年龄,运行如下: 占用属性={}


输入:[钢琴老师,22]

职业属性={钢琴教师}


输入:[学校教师,30]

职业属性={钢琴老师,学校老师}


输入:[钢琴老师,40]

职业属性={钢琴老师,学校老师}


等等

现在,我尝试通过复制以前的属性,添加新属性,然后更新模型的数据来手动执行此操作。 当训练模型时,这很好

但是! 当我想对一个新实例进行分类时,比如说[SW engineer,52],occuptationAttribute被更新: OccuptationAttribute={Piano教师、学校教师、软件工程师},但树本身以前从未“遇到”过“软件工程师”,因此无法完成分类并引发异常

你能说明如何处理上述情况吗? Weka是否有任何机制支持上述问题


谢谢

培训时,将占位符数据添加到您的标称属性中,如
\uuuuuuuuuuuuuuuuuuuuuu
。 在尝试对实例进行分类之前,首先检查是否以前看到了nominal属性的值;如果不是,请使用占位符值:

Attribute attribute = instances.attribute("OccuptaionAttribute");
String s = "SW engineer";
int index = attribute.indexOfValue(s);
if (index == -1) {
    index = attribute.indexOfValue("__other__");
}

当您有足够的数据时,请再次使用新值进行训练。

首先-非常感谢!:)但是我有一个问题,如果你可以-如果我用Weka给出的MissingValue代替“占位符数据”,它会有其他影响吗?是的,你可以用缺失的数据代替占位符数据。猜测:如果您的列车组不包含任何具有占位符数据的实例,则具有缺失数据或占位符数据的新实例将被视为最可能的数据。