【问题标题】:how to implement perceptron test如何实现感知器测试
【发布时间】:2015-04-25 13:16:01
【问题描述】:

我有一个感知器算法的实现,它根据词袋模型运行,定义了一系列权重来分离两个特征向量。

例子:

Document 1 = ["I", "am", "awesome"]
Document 2 = ["I", "am", "great", "great"]

字典是:

["I", "am", "awesome", "great"]

所以作为向量的文档看起来像:

Document 1 = [1, 1, 1, 0]
Document 2 = [1, 1, 0, 2]

然后算法学习一个决策边界方程,即:

feature_0 * weight_0 +
feature_1 * weight_1 +
feature_2 * weight_2 +
feature_3 * weight_3 +
bias

现在我有一个测试集,其格式与上面描述的训练集非常相似。根据我的决策边界方程测试这些值并为它们分配标签的伪代码是什么?

我猜它类似于(伪代码):

For each word in the test set
    if that word exists in the global dict
        value = the frequency of that word * the learned weight
            if value >= 0
                return 1
            else
                return -1

但是我想捕获整个特征向量的类,而不是一个词,所以我猜肯定是求和?

【问题讨论】:

    标签: java machine-learning perceptron


    【解决方案1】:

    不确定我是否理解正确。训练集和测试集需要具有精确相同的格式。要进行测试,您只需求解(您的测试集的)已知权重和特征的方程。

    原则上,您应该同时生成测试和训练数据,以确保它们尽可能相等 - 然后将它们分成两组。根据决策边界的设置方式生成测试数据(即标签)是一个非常糟糕的主意:测试集的主要思想是针对遵循未知、真实的数据测试当前训练的边界> 边界。通过将知识引入系统,您的测试结果将严重反映真实的准确性。

    【讨论】:

    • 我想我明白了,你能看看我的代码,看看你是否同意?它在我的github page 上,我评论了我在哪里进行测试。
    • 对我来说似乎是正确的,但不要认为这是理所当然的,因为我有点累了 atm :) 如果一切都正确,你可以设置 test=train set 并且应该得到接近 100% 的权利参数。
    • 那么,我可以在那个感知器类中切换测试集和训练集吗?我想如果我这样做,我将不得不将我的权重初始化为零而不是随机数,不是吗?然后我应该得到相同的结果?
    • 您要查找的内容称为 k 折验证:请参阅 wiki
    猜你喜欢
    • 2018-04-23
    • 2017-12-28
    • 2011-06-07
    • 2017-04-09
    • 2018-11-05
    • 2018-07-28
    • 2017-10-02
    • 2010-10-24
    • 2019-02-22
    相关资源
    最近更新 更多