Решение задачи регрессии Задачи 2 Набор данных Boston Housing https://archive.ics.uci.edu/ml/machine-learningdatabases/housing/ 3 Набор данных Boston Housing 4 Набор данных Boston Housing 5 Boston Housing в Keras import numpy as np from keras.datasets import boston_housing from keras.model import Sequential from keras.layers import Dense #Задаем seed для повторяемости результатов numpy.random.seed(42) #Загружаем данные (x_train, y_ train), (x_test, y_ test) = boston_housing.load_data() 6 Стандартизация данных Количество данных в наборе Boston Housing достаточно маленькое, всего лишь 506 записей, поэтому нам нужно помочь нейронной сети работать с этим набором данных и привести все признаки одной шкале для этого используется стандартизация данных Стандартизация данных Среднее значение 0, дисперсия 1 Алгоритм стандартизации Вычитаем среднее значение Делим на стандартное отклонение Реализация на Python: mean = x_train.mean(axis =0) std x_train.std (axis=0) x_train -= main x_train /= std x_test -= mean x_test /= std 7 Создаем нейронную сеть model = Sequential() model. add(Dense(128, activation='relu', input_shape=(x_train. shape[1], ))) model. add(Dense(1)) model. compile(optimizer='adam", loss='mse", metrics=['mae‘]) mse - Mean squared error (среднеквадратичная ошибка) mae - Mean absolute error (средняя абсолютная ошибка) Пример сети с двумя полносвязными слоями 8 Пояснения Applies the rectified linear unit activation function. With default values, this returns the standard ReLU activation: max(x, 0), the element-wise maximum of 0 and the input tensor. 9 Обучаем нейронную сеть model. fit(x_train, y_train, epochs=100, batch size=1, verbose=0) Epoch 1/100 Os - loss: 2.3545 - mean_absolute_error: 1.1522 Epoch 2/100 Os - loss: 2.3227 - mean_absolute_error: 1.1134 Epoch 3/100 … Epoch 99/100 Os - loss: 1.7014 - mean_absolute_error: 0.9610 Epoch 100/100 0s - loss: 1.6848 - mean_absolute_error: 0.9688 10 Пояснения Batch size = 500 Iterations = 4 Epoch = 1 11 Оцениваем качество обучения • mse, mae = model. evaluate(x_test, y_test, verbose=0) print (mae) 2.35782532598 12 Используем сеть для предсказаний стоимости недвижимости pred = model. predict(x_test) print(pred[1][0], y_test[1]) 18.0534 18.8 print(pred[50][0], y_test[50]) 34.4995 35.4 print(pred[100][0], y_test[100]) 32.7579 26.7 13