machine-learning - 对新的名义实例进行分类时更新数据集

标签 machine-learning data-mining weka

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

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

<小时/>

输入:[钢琴老师,22]。

OccuptaionAttribute = {钢琴老师}。

<小时/>

输入:[学校老师,30]

OccuptaionAttribute = {钢琴老师、学校老师}。

<小时/>

输入:[钢琴老师,40]

OccuptaionAttribute = {钢琴老师、学校老师}。

<小时/>

等等

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

但是! 当我想要分类一个新实例时,例如[SW工程师,52],OccuptaionAttribute已更新: OccuptaionAttribute = {钢琴老师、学校老师、软件工程师},但树本身以前从未“见过”“软件工程师”,因此无法完成分类并抛出异常。

您能指导一下如何处理上述情况吗? Weka有没有机制支持上述问题?

谢谢!

最佳答案

训练时将占位符数据添加到您的名义属性中,例如 __other__。 在尝试对实例进行分类之前,首先检查名义属性的值是否以前见过;如果不使用占位符值:

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

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

关于machine-learning - 对新的名义实例进行分类时更新数据集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13660137/

相关文章:

python - 如何在keras中将回归输出限制在0到1之间

algorithm - 在 Z 分数归一化数据上应用 K 均值聚类

csv - 测试集和训练集不兼容

java - 使用Weka将文件拆分为测试文件和训练文件

java - 我想对新实例进行分类,但我不想加载数据集来对其进行分类,我该怎么做?

machine-learning - 字符串作为决策树/随机森林中的特征

python - torch.jit.save 中 _extra_files arg 的正确用法是什么

matlab - 使用图像处理识别皮肤病

ROC 曲线看起来不正确

python - Pandas 数据透视表重命名列