Как керас глубокого обучения классифицировать с данными CSV? - PullRequest
0 голосов
/ 09 мая 2018

У меня есть данные, которые подпадают под две категории в соответствии с определенными условиями. (ex) условие1 и условие2 и условие3 = 1)

И я попытался создать модель, которая классифицирует ее с помощью приведенного ниже кода.

dataset_csv = np.loadtxt('dataset.csv', delimiter=',')   

x_train=dataset_csv[:round(len(dataset)*0.9),0:3]
y_train=dataset_csv[:round(len(dataset)*0.9),3]
x_test=dataset_csv[round(len(dataset)*0.9):,0:3]
y_test=dataset_csv[round(len(dataset)*0.9):,3]


model =Sequential()
model.add(Dense(12, input_dim=3, activation='relu'))
model.add(Dense(8, activation='relu'))
model.add(Dense(4, activation='relu'))
model.add(Dense(1, activation='sigmoid'))
model.compile(loss='binary_crossentropy', optimizer = 'adam', metrics = ['accuracy'])
model.fit(x_train,y_train,epochs = 10, batch_size =24)

scores = model.evaluate(x_test,y_test)

Однако результаты прогноза вышли следующим образом.

array([[9.414976e-08]], dtype=float32)

Я думал, что значение y, которое я установил, было распознано как класс.

но это не так.

Есть ли способ установить значение y в значение класса и вернуть значение класса, если я поставлю условие?

1 Ответ

0 голосов
/ 09 мая 2018

Прежде всего вы используете двоичную классификацию. Потому что вы используете один выходной нейрон. model.predict покажет вам вероятность того, как образец относится к сигналу.

Вы можете просто определить порог, чтобы определить, соответствует ли прогноз прогнозу сигнала или нет (в большинстве случаев он равен 0,5). Примерно так:

predict_output = np.array([0.52396882, 0.20368976, 0.06553409, 0.52519849, 0.20538633])
predicted_classes = (predict_output > 0.5).astype(int)

predicted_classes: array([1, 0, 0, 1, 0])

Здесь Предсказание_процесса является примером для вывода файла model.predict, если вы вызываете его с 5 выборками. Предсказанные классы должны быть желаемым результатом.

...