Я пытаюсь построить модель классификации для производственной линии. Если я правильно понимаю, можно использовать CNN для классификации числовых данных (и не только изображений)
Мои данные - это массив из 21 столбца в строке: 20 различных измерений, а последний столбец - это тип. Это может быть 0 или 1 или 2, каждая строка массива использует временную метку, так как индекс
тип 0 представляет 80% производства и не требует дополнительной обработки, но тип 1 и 2 требуют дополнительной обработки после производства ( , поэтому мне нужно четко идентифицировать их )
Чтобы воссоздать что-то, что может использовать CNN, я создал набор данных, где каждая метка имеет для обучающих данных массив из последних 20 предыдущих строк, так как position.
Таким образом, каждая метка имеет для соответствующих обучающих данных квадратный массив измерений 20x20 (например, изображение). (данные уже были нормализованы с использованием keras ColumnTransformer
после прочтения о несбалансированном наборе данных, я решил включать только тип 0 каждый раз, когда обнаружил тип 1 или 2. В конце мой размер набора данных составляет 18 000 строк, data shape '(18206, 20, 20)'
моя модель обучения довольно проста c и выглядит следующим образом:
train, test, train_label, test_label = train_test_split(X,y,test_size=0.3,shuffle=True)
##Call CNN model
sizePic = 20
model = Sequential()
model.add(Dense(sizePic*3, input_shape=(sizePic,sizePic,), activation='relu'))
model.add(Dense(sizePic, activation='relu'))
model.add(Flatten())
model.add(Dense(3, activation='softmax'))
# Compile model
sgd = optimizers.SGD(lr=0.03)
model.compile(loss='sparse_categorical_crossentropy', optimizer=sgd, metrics=['accuracy'])
self.logger.info(model.summary())
# Fit the model
model.fit(train, train_label, epochs=750, batch_size=200,verbose=1)
# evaluate the model
self.learning_scores = model.evaluate(test, test_label, verbose=2)
self.logger.info("scores %r"%self.learning_scores)
в конце прогноза оценки:
оценки [0.6088506683505354, 0,7341632843017578]
Я изменил параметры, такие как batch_size и скорость обучения, но без особых улучшений. Насколько я понимаю, лучше начать этот путь, чем добавлять Слои модели, это правильно? Любое предложение? Спасибо за ваше время