使用Sci-kit Learn神经网络训练2D输入

我正在尝试使用Python中的sci-kit learn训练一个神经网络来识别图像中的形状。我有一组位于边缘上的点,每个边缘用x和y坐标表示,形式为[x,y]。因此,我想使用格式为[[x,y],[x,y],[x,y],[x,y],[x,y],[x,y],等]的列表来训练网络。我尝试了以下代码,但得到了以下错误:

from sklearn.neural_network import MLPClassifierX = [[[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.

是否有人可以提供一些建议,告诉我如何处理这个问题,如果这是可能的话。根据神经网络的定义和逻辑,我不太确定这是否可行。请告诉我任何建议。谢谢!


回答:

Scikit-learn主要接受最多二维的输入。你可以尝试合并列表以降低维度。我使用了下面的代码将其转换为二维数据,并且对我来说运行良好

from sklearn.neural_network import MLPClassifierimport numpy as npX = [[[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)X_new = []for i in X:    temp =[]     for j in i:        for k in j:            temp.append(k)    X_new.append(temp)clf.fit(X_new,y)

循环结束时的X_new看起来像这样

[[0.0, 0.0, 0.0, 0.0], [1.0, 1.0, 1.0, 1.0]]

准确性将取决于数据。尝试一下,看看是否有效

Related Posts

Keras Dense层输入未被展平

这是我的测试代码: from keras import…

无法将分类变量输入随机森林

我有10个分类变量和3个数值变量。我在分割后直接将它们…

如何在Keras中对每个输出应用Sigmoid函数?

这是我代码的一部分。 model = Sequenti…

如何选择类概率的最佳阈值?

我的神经网络输出是一个用于多标签分类的预测类概率表: …

在Keras中使用深度学习得到不同的结果

我按照一个教程使用Keras中的深度神经网络进行文本分…

‘MatMul’操作的输入’b’类型为float32,与参数’a’的类型float64不匹配

我写了一个简单的TensorFlow代码,但不断遇到T…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注