为分类问题创建 Numpy 数据集的问题

数据挖掘 机器学习 Python 神经网络 分类 数据集
2022-02-20 02:12:59

我正在尝试训练一个分类模型来对图像进行分类,但我的图像是 1 和 0 的 Numpy 数组,如图所示,

目前,我已经尝试过,

x1_data=[]
def create_array(columns=5,rows=5,randomness=.3):

    board = np.zeros([rows,columns],dtype='int64')

    for i in range(rows):
        for j in range(columns):
            if np.random.random() <= randomness:
                board[i,j] = 1
    return board

for i in range(5):
    x1_data.append(create_array())

这给了我5个数组`

array([[[0, 0, 1, 0, 0],
        [0, 0, 1, 0, 0],
        [1, 0, 0, 0, 0],
        [0, 0, 0, 0, 1],
        [0, 0, 0, 0, 1]],

       [[0, 0, 1, 0, 0],
        [0, 0, 0, 1, 0],
        [0, 0, 0, 1, 0],
        [0, 0, 0, 1, 0],
        [0, 1, 0, 0, 0]],

       [[1, 0, 0, 1, 0],
        [1, 0, 0, 0, 0],
        [0, 1, 0, 0, 0],
        [0, 0, 0, 0, 0],
        [0, 0, 1, 0, 0]],

       [[0, 0, 0, 0, 0],
        [1, 0, 0, 1, 1],
        [0, 0, 1, 1, 1],
        [0, 0, 0, 0, 0],
        [0, 0, 1, 0, 1]],

       [[0, 0, 0, 0, 1],
        [0, 0, 0, 0, 0],
        [0, 0, 0, 1, 0],
        [0, 1, 1, 0, 0],
        [0, 0, 0, 0, 1]],

       [[1, 0, 0, 1, 1],
        [0, 0, 1, 1, 0],
        [0, 0, 1, 0, 0],
        [1, 0, 0, 0, 0],
        [1, 1, 0, 0, 0]]]

对于 A 类,类似地,我为 B 类生成了 5 个数组,然后将它们堆叠为单个 X 数组。

我的输出 y 是:

y = np.random.choice([0, 1], size=(10,), p=[1./3, 2./3])
array([0, 1, 1, 1, 1, 0, 0, 0, 0, 0])

如何预处理这些数据以在 sklearn 中训练 MLP 我收到此错误

clf = MLPClassifier(solver='lbfgs', alpha=1e-5, hidden_layer_sizes=(5, 2), random_state=1)
clf.fit(g, h)    
#Error
Found array with dim 3. Estimator expected <= 2.
1个回答

如果你打算使用 MLP 分类器(可能不是图像分类的最佳选择:为什么不使用 CNN?),你应该给它一个“平面”数组。每个图像有 25 个像素(特征),因此您的输入必须是 shape (n, 25),其中n是训练观察的数量(在您的情况下为 10)。

目前您的输入是形状(10, 5, 5)(维度 3,因此是错误消息)。尝试像这样重塑它:X = X.reshape(-1, 25).