python - WEKA 和 Scikit-Learn 多层感知器给出了不同的结果

标签 python scikit-learn weka

大家

我目前正在使用多层感知器进行一项研究。 我之前使用 WEKA 运行此程序,但由于各种原因我已迁移到 python 中的 scikit-learn。

我尝试在 WEKA 中重现我的预测结果以进行 scikit-learn,因此我制作了一个具有完全相同的学习率、动量、隐藏层等的精确感知器 然而,这两个平台的预测结果有所不同。有人可以给我一些关于此事的解释吗?

我唯一注意到的是 scikit learn 使用 lbfgs、adam 和 sgd 来优化其连接权重,而 WEKA 使用反向传播。但这可能是唯一的原因吗?还是还有其他原因?

致以诚挚的问候

最佳答案

如果你使用不同的优化器训练神经网络,它肯定会给出不同的结果。这种差异可能很小,也可能很大。所有 NN 优化算法都使用反向传播 - 即 LBFGS、Adam 和 SGD 都使用反向传播。另外 - 一般来说 - 训练同一个神经网络两次可能永远不会给你完全相同相同的结果 - 这是因为大多数优化器(至少是值得你花时间的优化器)采取部分随机步骤。

关于python - WEKA 和 Scikit-Learn 多层感知器给出了不同的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52159019/

相关文章:

python - 在 Python 装饰器中丢失变量范围

python - matplotlib 中的重叠趋势 : every loop gives additional trend

r - 如何绘制 ROC 曲线以从 Weka 输出的二元类和多类数据进行交叉验证?

python - 我是否需要在训练数据中缩放测试数据和因变量?

python - 网格搜索需要 30 多分钟,有什么方法可以减少这个时间吗? (Jupyter Azure)

machine-learning - 横扫所有机器学习分类器?

java - 如何在j48算法中注入(inject)IBk(knn)? (韦卡、java)

python - 在 Python 中检测 OS 暗模式

python - Matplotlib 轴 : splitting an axes object into two

python - 绘制分类器的决策边界,ValueError : X has 2 features per sample; expecting 908430"