Python 试图理解训练数据结构

Python 试图理解训练数据结构,python,scikit-learn,Python,Scikit Learn,我正在尝试训练一个模型,以便在一行灰度像素之间进行选择 from sklearn.neural_network import MLPRegressor X = [[1, 2, 3], [2, 1, 3], [2, 1, 2]] y = [0, 1, 2] model = MLPRegressor(hidden_layer_sizes=(10, 10), solver="lbfgs", activation="relu") model.fit(X, y)

我正在尝试训练一个模型,以便在一行灰度像素之间进行选择

from sklearn.neural_network import MLPRegressor

X = [[1, 2, 3], [2, 1, 3], [2, 1, 2]]
y = [0, 1, 2]
model = MLPRegressor(hidden_layer_sizes=(10, 10), solver="lbfgs", activation="relu")
model.fit(X, y) 
其中X是我想要训练模型的线条列表,y是模型应该输出的预期像素索引。(示例值)

img[0]打印的位置

[0.61176471 0.46045752 0.2627451 ]
在控制台中。这是意料之中的

但预测失败了:

ValueError:应为2D数组,而应为1D数组:数组=[0.61176471 0.46045752 0.2627451 ]. 使用数组重塑数据形状。如果数据具有单个特征或 如果包含单个样本,则重塑(1,-1)

一旦用以下材料重塑:

line = (np.array(img[0])).reshape(1,-1)
产出:

[[0.61176471 0.46045752 0.2627451 ]]
模型。预测(行)
输出

[1.79295143]
我无法解释,因为我在寻找一系列指数概率,比如[0.998,0.001,0.001]

在此之前,我使用的是RGB像素线,看起来应该像[[[R][G][B]、[[R][G][B]、[[R][G][B]],其中字母是介于0和1之间的值 模型输出了一组概率。 这让我现在觉得它没有像预期的那样工作,很可能输出的是与颜色相关的概率,而不是像素


我做错了什么?

当您使用回归时,模型将尝试预测一个连续值,这就是您训练它的方式(请注意,输出Y是一个单一值):

  • 从X=[1,2,3]拟合Y=0
  • 从X=[2,1,3]拟合Y=1
  • 从X=[2,1,2]拟合Y=2
您期望的输出是分类器的输出,其中每个类都获得一个概率作为输出,即预测的置信度。如果你想要/需要的话,你应该使用分类模型。并对其进行相应的训练(输出中的每个索引代表一个类)

  • from X=[1,2,3]拟合Y=[1,0,0]
  • from X=[2,1,3]拟合Y=[0,1,0]
  • from X=[2,1,2]拟合Y=[0,0,1]

这里显示的只是灰度图像的img[0](1个通道而不是3个通道),因此这里对我来说只有1个预测是合理的。您是否尝试过使用img而不是img[0]进行培训?谢谢,效果不错。预测输出现在看起来像[[0 1]]
[1.79295143]