【发布时间】:2019-01-29 16:00:57
【问题描述】:
我正在尝试使用 Python 中的 sci-kit learn 来训练神经网络,以识别图像中的形状。我有一个位于边缘上的点列表,每个边缘用 x 和 y 坐标表示,格式为 [x,y]。所以,我想使用[[x,y],[x,y],[x,y],[x,y],[x,y],[x,y],etc.] 格式的列表来训练网络。我使用以下代码尝试了此操作,但出现以下错误:
from sklearn.neural_network import MLPClassifier
X = [[[0., 0.], [0., 0.]], [[1., 1.], [1., 1.]]]
y = [0, 1]
clf = MLPClassifier(solver='lbfgs', alpha=1e-5,
hidden_layer_sizes=(5, 2), random_state=1)
clf.fit(X, y)
ValueError: Found array with dim 3. Estimator expected <= 2.
如果可能的话,有没有人对我如何解决这个问题有任何建议。根据神经网络的定义和逻辑,我不太确定这是否可能。请让我知道任何建议。谢谢!
【问题讨论】:
-
不同样本的点数可以不同吗?我的意思是在第一个样本中你只有 2 个边缘点,
[[x1,y1], [x2,y2]],但接下来你有 3 个 -[[x1,y1], [x2,y2], [x3,y3]]。如果它们是常量,您可以将它们转换为每个样本的单个列表[x1, y1, x2, y2, x3, y3..],然后通过。 Scikit-learn 不接受除 2-d 形状的特征矩阵之外的任何其他形状。 -
感谢您的回复@VivekKumar。点数会有所不同,但我可能会尝试这样的事情。
标签: python machine-learning scikit-learn neural-network