我刚刚开始使用 Weka,并且在第一步中遇到了麻烦。
我们有我们的训练集:
@relation 感知器异或 @attribute X1 数字 @attribute X2 数字 @attribute 输出数字 @数据 1,1,-1 -1,1,1 1,-1,1 -1,-1,-1
我想做的第一步就是训练,然后使用 Weka gui 对集合进行分类。到目前为止我一直在做什么:
使用 Weka 3.7.0。
- 启动图形用户界面。
- 探险家。
- 打开文件-> 选择我的 arff 文件。
- 分类选项卡。
- 使用训练集单选按钮。
- 选择-> 函数>multilayer_perceptron
- 单击顶部的“多层感知器”文本以打开设置。
- 将隐藏层设置为“2”。(如果选择 gui 为真,则表明这是我们想要的正确网络)。单击确定。
- 点击开始。
输出:
=== 运行信息 === 方案:weka.classifiers.functions.MultilayerPerceptron -L 0.3 -M 0.2 -N 500 -V 0 -S 0 -E 20 -H 2 -R 关系:PerceptronXOR 实例:4 属性:3 X1 X2 输出 测试模式:对训练数据进行评估 === 分类器模型(完整的训练集)=== 线性节点 0 输入权重 阈值 0.21069691964232443 节点 1 1.8781169869419072 节点 2 -1.8403146612166397 Sigmoid 节点 1 输入权重 阈值 -3.7331156814378685 属性 X1 3.6380519730323164 属性 X2 -1.0420815868133226 乙状结肠节点 2 输入权重 阈值 -3.64785119182632 属性 X1 3.603244645539393 属性 X2 0.9535137571446323 班级 输入 节点 0 构建模型所需时间:0 秒 === 训练集评估 === === 总结 === 相关系数 0.7047 平均绝对误差 0.6073 均方根误差 0.7468 相对绝对误差 60.7288 % 根相对平方误差 74.6842 % 实例总数 4
0.3 的 500 次迭代并没有得到错误,但 5000 @ 0.1 的错误似乎很奇怪,所以让我们继续吧。
现在使用测试数据集:
@relation 感知器异或 @attribute X1 数字 @attribute X2 数字 @attribute 输出数字 @数据 1,1,-1 -1,1,1 1,-1,1 -1,-1,-1 0.5,0.5,-1 -0.5,0.5,1 0.5,-0.5,1 -0.5,-0.5,-1
- “提供的测试集”的单选按钮
- 选择我的测试集 arff。
- 点击开始。
=== 运行信息 === 方案:weka.classifiers.functions.MultilayerPerceptron -L 0.1 -M 0.2 -N 5000 -V 0 -S 0 -E 20 -H 2 -R 关系:PerceptronXOR 实例:4 属性:3 X1 X2 输出 测试模式:用户提供的测试集:大小未知(增量读取) === 分类器模型(完整的训练集)=== 线性节点 0 输入权重 阈值-1.2208619057226187 节点 1 3.1172079341507497 节点 2 -3.212484459911485 Sigmoid 节点 1 输入权重 阈值 1.091378074639599 属性 X1 1.8621040828953983 属性 X2 1.800744048145267 乙状结肠节点 2 输入权重 阈值 -3.372580743113282 属性 X1 2.9207154176666386 属性 X2 2.576791630598144 班级 输入 节点 0 构建模型所需时间:0.04 秒 === 测试集评估 === === 总结 === 相关系数 0.8296 平均绝对误差 0.3006 均方根误差 0.6344 相对绝对误差 30.0592 % 根相对平方误差 63.4377 % 实例总数 8
为什么无法正确分类这些?
仅仅是因为它在训练数据上很快达到了局部最小值,并且不“知道”这并不适合所有情况吗?
问题。
- 为什么 500 @ 0.3 不起作用?对于这样一个简单的问题似乎很奇怪。
- 为什么它在测试集上失败。
- 如何传入一个集合进行分类?