MLP学习对简单案例产生不良结果

时间:2019-09-06 09:44:47

标签: python scikit-learn

我是sklearn的新手,所以我仅使用一些非常简单的案例来测试我是否正确使用了这些工具。

from sklearn import neural_network as nn
from numpy.random import random as random

X = [[int(10*random()), int(10*random())] for i in range(100)]
y = [sum(X[i]) for i in range(100)]

mlp = nn.MLPRegressor(hidden_layer_sizes=(1))
mlp.fit(X,y)

这只是一个非常简单的数据集,输入元素的总和就是输出。

但是当我预测其他输入时,结果是完全错误的。 例如:

print(mlp.predict([[1,2]]))
[1.14837125]

但是我期望[3]作为输出(1和2之和)

mlp.coefs_返回[array([[-0.27704864], [-1.05561447]]), array([[-0.81486066]])] 我有两个条目,所以我认为应该有三个系数(两个带有条目,一个代表常数)。这些是什么?文件没有说明。

请问我是否对该功能有误解?

1 个答案:

答案 0 :(得分:1)

它可能没有足够的示例(即使对于这样一个简单的NN,100个也不是一个大数据集)。这是一个对我有用的解决方案(经过重构):

from sklearn import neural_network as nn
from numpy.random import random

X = random((10000, 2)) * 10
y = X.sum(axis=1)

mlp = nn.MLPRegressor(hidden_layer_sizes=(1), max_iter=10000, activation='identity')
mlp.fit(X, y)

>>> mlp.predict([(1, 2)])
array([3.01464952])

有100'000个示例和100'000次迭代:

>>> mlp.predict([(1, 2)])
array([3.00000032])