Keras分类器 – 多类分类输入形状

我正在尝试进行多类分类,这里提到的一些数据(这有助于理解数据形状与Keras输入形状不匹配的原因):

X = x_data.loc[:,x_data.columns[0:6]]Y = y_data.loc[:,]print(X.shape)print(Y.shape)X = X.valuesY = Y.values

以上代码输出如下:

(237, 6)(237,)[[0 0 0 0 0 0] [0 0 0 0 0 0] [0 0 0 0 0 0] ... [0 0 0 1 0 0] [0 0 0 1 0 0] [0 0 0 1 0 0]][ 0  0  2  8  8  9  5  0  1  2  4  4  5  5  6  9 10  0  3  8 10  2  7  7  7  7  7  7  7  8  8  8  8  8  8  8  8  8  8  9  9  9  9  9  9  9  9  9 10 10 10 10 10 10 10 10 10 10  1  2  4  5  4  1  3  8  9 11  4  5  8  6  1 11  8  9 11  2 11  1  3  4  1  1  4 10 11  9  3 11  8  6  9  0  0  6  7 10  0  2  7  5  7  9 11  1  4  3  5  6  7  5  7  3  5  2  6  6  9  2 10 11  6  8  8 11  6 10  0  3  3 10  2  5  9  9 11  8  7  8  4 10 10  1  1  6  9  4  5 10  0  3  2  4  7  2  6  7 10 11 11 11 11 11 11 11 11  0  0  0  0  0  0  0  0  0  0  1  1  1  1  1  1  1  1  1  2  2  2  2  2  2  2  2  2  2  3  3  3  3  3  3  3  3  3  4  4  4  4  4  4  4  4  4  4  5  5  5  5  5  5  5  5  5  6  6  6  6  6  6  6  6  6  7  7  7  7]

下面是我的Keras模型代码,我对输入形状感到困惑。

def baseline_model():    # 在这里创建模型    model = Sequential()    model.add(Dense(15, input_shape = [6] , activation = 'relu')) # 整流线性单元激活函数    model.add(Dense(15, activation = 'relu'))    model.add(Dense(11, activation = 'softmax')) # 用于多类分类的Softmax    # 在这里编译模型    model.compile(loss = 'categorical_crossentropy', optimizer = 'adam', metrics = ['accuracy'])    return modelestimator = KerasClassifier(build_fn = baseline_model, epochs = 100, batch_size = 10, verbose = 0)kfold = KFold(n_splits = 2, shuffle = True, random_state = 10)results = cross_val_score(estimator, X, Y, cv = kfold)

我得到的错误是:

    ValueError: Shapes (None, 1) and (None, 11) are incompatible

你能帮我指出我在参数设置上哪里出了问题,需要如何调整以适应数据吗?

提前感谢


回答:

问题出在你的Y的形状(237),因为你使用了分类交叉熵损失函数,你必须对标签进行独热编码,例如通过调用以下代码:

'''确保你的标签是从0开始的连续序列,例如(0, 1, 2, ..)'''NUM = len(np.unique(Y))Y = keras.utils.to_categorical(Y, num_classes = NUM)

这样处理后,Y的形状将变为(237, NUM)

另一种解决方案是使用稀疏分类交叉熵损失函数,它不需要对多类标签进行独热编码,你可以直接使用Y(237)。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

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