Machine learning 在对新的标称实例进行分类时更新数据集
我使用J48对由数值和标称值组成的实例进行分类。 我的问题是,我不知道在我的程序中会遇到哪个标称值。 因此,我需要“动态”更新模型的标称属性数据 例如,假设我只有2个属性,职业和年龄,运行如下: 占用属性={}Machine learning 在对新的标称实例进行分类时更新数据集,machine-learning,data-mining,weka,Machine Learning,Data Mining,Weka,我使用J48对由数值和标称值组成的实例进行分类。 我的问题是,我不知道在我的程序中会遇到哪个标称值。 因此,我需要“动态”更新模型的标称属性数据 例如,假设我只有2个属性,职业和年龄,运行如下: 占用属性={} 输入:[钢琴老师,22] 职业属性={钢琴教师} 输入:[学校教师,30] 职业属性={钢琴老师,学校老师} 输入:[钢琴老师,40] 职业属性={钢琴老师,学校老师} 等等 现在,我尝试通过复制以前的属性,添加新属性,然后更新模型的数据来手动执行此操作。 当训练模型时,这很好
输入:[钢琴老师,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代替“占位符数据”,它会有其他影响吗?是的,你可以用缺失的数据代替占位符数据。猜测:如果您的列车组不包含任何具有占位符数据的实例,则具有缺失数据或占位符数据的新实例将被视为最可能的数据。