我尝试使用Weka的单层MLP输出在Matlab中进行预测。 在我的例子中,我有一个包含100个节点和200个功能的单层。 我正在运行Weka 3.7.10,而weka.classifiers.functions.MultilayerPerceptron的选项是 -L 0.3 -M 0.2 -N 500 -V 0 -S 0 -E 20 -H a
在我的情况下,节点0是线性的,而不是Sigmoid。 节点1-100都是Sigmoid。我没有使用-C或-I选项,所以默认情况下Weka会对数据进行规范化。
当我尝试在Matlab中计算预测值时,我得不到与Weka相同的值。 在以下代码中:
featvalsnorm = interp1([min(featvals) max(featvals)],[-1 1],featvals,'linear');
featvalsnorm2 = (featvals - min(featvals))/(max(featvals)-min(featvals));
for j = 1:100
featweights = featweightsall( ((j-1)*200+1):(j*200));
x = sum(featvalsnorm.*featweights) + nodethresh(j+1);
nodenorm(j) = 1/(1+exp(-x));
end
predvalnorm = sum(nodenorm.*nodeweights)+nodethresh(1);
predval = interp1([-1 1],[min(featvals) max(featvals)],predvalnorm,'linear');
代码有什么问题?我应该在循环中取消规范化,还是应用 sigmoid到节点0?我尝试了很多这样的组合,但没有任何工作。任何帮助将不胜感激!