Моя задача - изучить дефектные предметы на фабрике.Это значит, что я пытаюсь обнаружить бракованный товар или прекрасный товар.Это привело к проблеме, когда один класс доминирует над другими (один класс составляет 99,7% данных), поскольку дефектные элементы были очень редкими.Точность обучения составляет 0,9971, а точность проверки - 0,9970.Это звучит потрясающе.Но проблема в том, что модель только предсказывает, что все это 0 класс, который является хорошим товаром.Это означает, что он не может классифицировать любые дефектные товары.Как я могу решить эту проблему?Я проверил другие вопросы и попробовал, но у меня все еще есть ситуация.общее количество точек данных составляет 122400 строк и 5 x функций.
В конце концов, моя запутанная матрица набора тестов выглядит так:
array([[30508, 0],
[ 92, 0]], dtype=int64)
, которая выполняет ужасную работу.
Мой код указан ниже:
le = LabelEncoder()
y = le.fit_transform(y)
ohe = OneHotEncoder(sparse=False)
y = y.reshape(-1,1)
y = ohe.fit_transform(y)
scaler = StandardScaler()
x = scaler.fit_transform(x)
x_train, x_test, y_train, y_test = train_test_split(x,y,test_size = 0.25, random_state = 777)
#DNN Modelling
epochs = 15
batch_size =128
Learning_rate_optimizer = 0.001
model = Sequential()
model.add(Dense(5,
kernel_initializer='glorot_uniform',
activation='relu',
input_shape=(5,)))
model.add(Dense(5,
kernel_initializer='glorot_uniform',
activation='relu'))
model.add(Dense(8,
kernel_initializer='glorot_uniform',
activation='relu'))
model.add(Dense(2,
kernel_initializer='glorot_uniform',
activation='softmax'))
model.compile(loss='binary_crossentropy',
optimizer=Adam(lr = Learning_rate_optimizer),
metrics=['accuracy'])
history = model.fit(x_train, y_train,
batch_size=batch_size,
epochs=epochs,
verbose=1,
validation_data=(x_test, y_test))
y_pred = model.predict(x_test)
confusion_matrix(y_test.argmax(axis=1), y_pred.argmax(axis=1))
Спасибо