Если у вас нет каких-то важных причин отступать от следующего плана, то придерживайтесь его. Во всяком случае будет неплохо с него начать.
-
Определиться с набором данных $X$ и целевой переменной $Y=f(x)$. Целевая переменная может быть одна (значение - в регрессии, класс - в классификации), или их может быть несколько (массив значений вероятности для множества классов).
| $X_1$ |
$X_2$ |
.. |
$X_n$ |
$Y$ |
| 1 объект |
цель 1 |
| 2 объект |
цель 1 |
| .. |
.. |
| m-ый объект |
цель m |
-
Предобработка данных (приведение типов, повороты и растяжения. удаление пропусков). Все преобразования производятся над данными до их разделения на выборки. Для удобства последующего использования модели с новыми данными, стоит оформить обработку как функцию
def.
-
Разделить данные ($X, Y$) на обучающую и тестовую выборки
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, Y, test_size=0.25, random_state=13)
-
Создать модель. Накидать слоёв (в соответствии с вашими целями).
-
Собрать модель, подобрав нужные для конкретного типа задачи функцию потерь и проч. аргументы
model.compile(loss='?', optimizer='?', metrics=['?'])
-
Обучить нейросеть, чтобы она, получая на вход
X_train, предсказывала значения y_train. От аргументов epochs и batch_size будет зависеть время обучения и точность модели на обучающей выборке
model.fit(X_train, y_train, epochs=?, batch_size=?)
-
Посчитать и вывести точность на тестовом наборе данных (который не участвовал в обучении).
_, accuracy = model.evaluate(model.predict(X_test), y_test)
-
Если позволяет задача, вывести график с данными и предсказаниями нейронки на тестовом наборе. Проверить, что сделанное совпадает с задуманным.
-
Поэкспериментировать с архитектурой сети (количество слоев, количество нейронов в слоях, функции активации), попытаться улучшить точность и упростить архитектуру.